# OR_OBJECTDETAILS_30

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Author</Name><Value VariantType="String">Crystal Decisions</Value></Property><Property><Name>Description</Name><Value VariantType="String">Logo for Xtreme Mountain Bikes</Value></Property><Property><Name>ObjectDescriptor</Name><Value VariantType="String">contentSize=4186,1605 fullSize=4186,1605 contentOffset=0,0 cursorOffset=-2147483648,0 baselineOffset=0 analysisObjectType=10 analysisGroupLevel=0 objectType=1 isSummaryObject=0 canCopyObject=23806448 isFieldObject=7274595</Value></Property><Property><Name>Type</Name><Value VariantType="String">{5502F81F-D412-4B91-892D-2DE67EEE6DED}</Value></Property></CrystalReports.PropertyBag>


Contents:
<CrystalReports.PictureObject xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PictureObject" version="2"><SectionCode>0</SectionCode><SectionName></SectionName><Top>0</Top><Left>0</Left><Width>2685</Width><Height>750</Height><Kind>Picture</Kind><ObjectName></ObjectName><Border xsi:type="CrystalReports.Border" id="1" version="2"><LeftLineStyle>NoLine</LeftLineStyle><RightLineStyle>NoLine</RightLineStyle><TopLineStyle>NoLine</TopLineStyle><BottomLineStyle>NoLine</BottomLineStyle><HasDropShadow>false</HasDropShadow><BackColor>-1</BackColor><BorderColor>0</BorderColor><TightHorizontal>false</TightHorizontal><ConditionFormulas/></Border><ObjectFormat xsi:type="CrystalReports.ObjectFormat" id="2" version="2"><CanGrow>false</CanGrow><Suppress>false</Suppress><CloseAtPageBreak>true</CloseAtPageBreak><KeepTogether>true</KeepTogether><HorizontalAlignment>Default</HorizontalAlignment><ToolTipText>http://www.crystaldecisions.com</ToolTipText><CssClass></CssClass><ConditionFormulas/><HyperlinkText>http://www.crystaldecisions.com</HyperlinkText><HyperlinkType>Undefined</HyperlinkType><TextRotationAngle>Rotate0</TextRotationAngle></ObjectFormat><LinkedURI></LinkedURI><ReportPartBookmark/><PictureFormat xsi:type="CrystalReports.PictureFormat" id="3" version="2"><LeftCropping>0</LeftCropping><TopCropping>0</TopCropping><RightCropping>0</RightCropping><BottomCropping>0</BottomCropping></PictureFormat><OriginalWidth>2685</OriginalWidth><OriginalHeight>750</OriginalHeight><PictureType>Bitmap</PictureType><PictureData xsi:type="CrystalReports.ByteArray" id="4"><Bytes>KAAAALMAAAAyAAAAAQAIAAAAAAAAAAAAww4AAMMOAAAAAAAAAAAAAPTu6//7+fj/+vj3/+PVzf+/oY7/waSS/+bb1P/u5uH/9vHu//Tv7P+ec1X/n3NW/590Vv+gdVf/oHVY/6F2Wf+id1v/onhb/6F3Wv+kel3/o3ld/6N6Xv+ke1//pHtg/6V9Yf+mfWL/pn5j/6d/ZP+ngGX/qIFm/66JcP+tiG//rYlw/66Kcf+wjHT/r4tz/7KQeP+xjnf/tJJ7/7ORev+0k3z/t5aA/7iYgv+8nYn/wKOQ/8KnlP/EqZf/xauZ/8iunf/GrJv/x66d/8qyov/Ntqb/zrip/9K+sf/VwrX/2Ma6/9fGuv/ayb7/28vA/97Pxf/l2dH/6d/Y/+zj3f/z7en/nXJT/590Vf+jel3/q4Zr/7CNdP+6m4X/yLCf/9G8rf/czcL/3tDG/+DTyf/k2M//7+jj/+rh2v/w6uX/+PXy//bz8P/49vT//fz7//z7+v/7+vn///////7+/v/9/f3//Pz8//v7+//4+Pj/9vb2//T09P/z8/P/8PDw/+/v7//s7Oz/6+vr/+np6f/m5ub/5OTk/+Pj4//h4eH/3t7e/93d3f/a2tr/2NjY/9fX1//V1dX/09PT/9DQ0P/Ozs7/zc3N/8rKyv/IyMj/x8fH/8TExP/Dw8P/wMDA/7+/v/+9vb3/u7u7/7m5uf+3t7f/tLS0/7Kysv+wsLD/rq6u/62trf+qqqr/qKio/6enp/+lpaX/o6Oj/6CgoP+fn5//nZ2d/5ubm/+YmJj/lpaW/5WVlf+Tk5P/kJCQ/46Ojv+MjIz/ioqK/4mJif+Hh4f/hYWF/4ODg/+AgID/f39//3x8fP97e3v/eHh4/3Z2dv91dXX/c3Nz/3BwcP9vb2//bGxs/2pqav9oaGj/Z2dn/2VlZf9jY2P/YWFh/15eXv9cXFz/Wlpa/1hYWP9WVlb/VVVV/1JSUv9QUFD/T09P/01NTf9LS0v/SUlJ/0dHR/9ERET/Q0ND/0FBQf8+Pj7/PDw8/zo6Ov84ODj/Nzc3/zQ0NP8zMzP/MTEx/y4uLv8sLCz/Kysr/ygoKP8mJib/JSUl/yMjI/8hISH/Hh4e/x0dHf8bGxv/GBgY/xYWFv8VFRX/ExMT/xAQEP8PDw//DQ0N/wsLC/8JCQn/BwcH/wQEBP8CAgL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9WVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgJWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVmSHhodvVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVmTQ19ezVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlad19fRaVZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZn0NfXl1ZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgJWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWrtfXvVhWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWfdbX1XZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlI8RwUwOghWVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWWsDX16hWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWPiMOCg0KDERMVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlVcXFZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVpXX189mVlZWVlZWVlZWVlZWW11cWVZWVlZWVlZWVlZWVlpcW1ZWVlZWVlZWVlZaXFxWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZOHQ4WFhYWFg8XTFZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZ5pr7HxLSVYlZWVlZWVoiiopFXVlZWVlZWVlZWVlZWVmTO19eKVlZWVlZWVlZWcZu0wcfFuqV8VlZWVlZWVlZVlLzHw7KKWFZWVlZWdKW9x8OxilZ2oqKXVVZWVl6eoqJ+VlZWVlZWVlZWVlZWVlZWVlZWVgIoDRYWFhYWFhYOIQhWVlZWVlZWVlZWVlZWVlZWVgJWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVpfV19fX19fXwnhWVlZWVq/X18BZVlZWVlZWVlZWVlZWVnHT19e1WFZWVlZWV2+m09fX19fX19fXn1VWVlZWVlab19fX19fWZ1ZWVlaL09fX19fX16mi19fLXFZWVmPX19efVlZWVlZWVlZWVlZWVlZWVlZWVkkMFhYWFhYWFhYWCjdWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZYodfX19fX19fX19KGWFZWVqrX17pZVlZWVlZWVlZWVlZWVqHX19fVb1ZWVlZWW7zX19fX19XX19fX15tWVlZWVmPP19fX19fXfFZWVofX19fX19XX19fV19fFXFZWVmPR19ebVlZWVlZWVlZWVlZWVlZWVlZWVjIKFhYWFhYWFhYWDAVWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlaH19fX0KSLkbTX19e2W1ZWVqrX17pZVlZWVlZWVlZWVlZWXcfX19fXmFZWVlZWVoTX17uYfnJ5lMrX19JmVlZWVnzX19euen6gfVZWW8LX19OffHKEqNTX19fFXFZWVmPR19ebVlZWVlZWVlZWVlZWVlZWVlZWVi0MFhYWFhYWFhYWDitWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVl7G19fPeVZWVlaG1blhVlZWVqrX17pZVlZWVlZWVlZWVlZWgdfXztXXxVxWVlZWVlioiVVWVlZWVobX19d6VlZWVoXX19NpVlZWWFZWb9XX1pBWVlZWVn/Q19fFXFZWVmPR19ebVlZWVlZWVlZWVlZWVlZWVlZWVjIKFhYWFhYWFhYWDAVWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVn7X19eRVlZWVlZWdmRWVlZWVqrX17pZVlZWVlZWVlZWVlZWq9fXpbjX14RWVlZWVlZWVlZWVlZWVoDX19d8VlZWVoXX19BgVlZWVlZWf9fX0WJWVlZWVlac19fFXFZWVmPR19ebVlZWVlZWVlZWVlZWVlZWVlZWVkkMFhYWFhYWFhYWCjdWVlZWVlZWVlZWVlZWVlZWVgJWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVprX19FmVlZWVlZWVlZWVlZWVqrX17pZVlZWVlZWVlZWVlZizNfXeZLX165WVlZWVlZWVlZWVlZWc8DX19dxVlZWVoXX19BfVlZWVlZWf9fX0WFWVlZWVlaP19fFXFZWVmPR19ebVlZWVlZWVlZWVlZWVlZWVlZWVgInDhYWFhYWFhYPHwhWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVq/X17xYVlZWVlZWVlZWVlZWVqrX17pZVlZWVlZWVlZWVlaN19fKW23U189mVlZWVlZWVlZWXX2p09fX17tbVlZWVoXX19BfVlZWVlZWa9TX159aVlZWVlaY19fFXFZWVmPR19ebVlZWVlZWVlZWVlZWVlZWVlZWVlY+Gw4WFhYWFg8VA1ZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWWbrX16tWVlZWVlZWVlZWVlZWVqrX17pZVlZWVlZWVlZWVlq+19esVle/19eSVlZWVlZWVl6PwdfX19fXy25WVlZWVoXX19BfVlZWVlZWWLnX19e3joGEkq7R19fFXFZWVmPR19ebVlZWVlZWVlZWVlZWUk4GT1dWVlZWBh4MCg4MC0RLVlZWVldNA0xAVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWWbzX16lWVlZWVlZWVlZWVlZWVqrX17pZVlZWVlZWVlZWVnPW19eHVlae19e5V1ZWVlZWgMHX19fX19axb1ZWVlZWVoXX19BfVlZWVlZWVnXN19fX19fX19fX19fFXFZWVmPR19ebVlZWVlZWVlZWVgAxRBcTGylJVlZWVlA7MQQvOQBWVlZWSykZFBQbK05WVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWV7TX17JWVlZWVlZWVlZWVlZWVqrX17pZVlZWVlZWVlZWVpvX18pgVlZz1dfVclZWVlaJ1dfX19fSqHhWVlZWVlZWVoXX19BfVlZWVlZWVlZwttfX19fX19fW19fFXFZWVmPR19ebVlZWVlZWVlZWTiAKEUMVFA4NM1dWVlZWVlZWVlZWVlZIDw4UFRUUDBhJVlZWVlZWVgJWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVqTX18dcVlZWVlZWVlZWVlZWVqrX18BaVlZWVlZWVlZWXsbX16RWVlZawNfXolZWVmTP19fXy51tVlZWVlZWVlZWVoXX19BfVlZWVlZWVlZWWXybqa+tpI2h19fFXFZWVmPR19ebVlZWVlZWVlZSJUIWFhYWFhYUDElWVlZWVlZWVlZWVj0PERYWFhYWFg8cTVZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVovX19Z5VlZWVlZWVldWVlZWVqrX19BkVlZWVlZWVlZWfdfX135WVlZWndfXzmRWVoDX19e0alZWVlZWVlZWVlZWVoXX19BfVlZWVlZWVlZWVlZWVlZWVlaR19fFXFZWVmPR19ebVlZWVlZWVlY2ChYWFhYWFhYWDyFQVlZWVlZWVlZWUyoOFhYWFhYWFhYKLlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVmvU19e3W1ZWVlZbqJpWVlZWVqrX19eXVlZWVlZWVlZWptfXzWFWVlZWdNbX14ZWVorX19VtVlZWVlZeW1ZWVlZWVoLX189bVlZWVlZWVlZWVlZWVlZWVlan19fBW1ZWVmPR19ebVlZWVlZWVldGDhYWFhYWFhYWFg5KVlZWVlZWVlZWPxYVFhYWFhYWFhYQIVVWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlam19fXtHJeYYW519WHWFZWVqrX19fRlmxkdZFcVlZnztfXp1ZWVlZWWbnX17JXVoLX19aNW1ZaZI/AllZWVldtcpbX19F4cnJyY1ZWVlZWiZttW1dWW4XQ19euVlZWVmPR19ebVlZWVlZWVlUiERYWFhYWFhYWFgpIVlZWVlZWVlZWPBAVFhYWFhYWFhYUHAlWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZmx9fX19XKztfX19e+XFZWVqrX19fX19PR1ddzVlaT19fXgVZWVlZWVo/X19RtVmfQ19fWv7S8zdfXz2tWVlq71dXX19fV1dXVjVZWVlZlzdfTw7e1wtfX19d9VlZWVmPR19ebVlZWVlZWVlVFERYWFhYWFhYWFgpIVlZWVlZWVlZWSxAVFhYWFhYWFhYUHQhWVlZWVgJWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWcsXX19fX19fX17xrVlZWVqvX18vP19fX19eZVlm819fQZFZWVlZWVm/X19eVVlaM1tfX19fX19fX0H5WVlrA19fX19fX19fXkFZWVlaI19fX19fX19fX16FWVlZWVmPR19ebVlZWVlZWVlcrDRYWFhYWFhYWEw9LVlZWVlZWVlZWTxkUFhYWFhYWFhYSJVNWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVmelytfX19XEmF5WVlZWVqfX17Z4vNXX19OhVmvGyMmiVlZWVlZWVlmwycmyW1ZWgbnT19fX1cWjblZWVlmxyM7X19bJyMjJiFZWVlZgjbXO1tfX19O9jVZWVlZWVmPR19ebVlZWVlZWVlY4CxYWFhYWFhYWDyQCVlZWVlZWVlZWVgULFhYWFhYWFhYKNFZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWYXqHhXJcVlZWVlZWVmSVyb1WWnSHhG9VVlteXV5ZVlZWVlZWVlZaXl1fWFZWVllsf4eCcVxWVlZWVlZcXYjX19BkXV1eVVZWVlZWVlZjeISIgW1VVlZWVlZWVmPR19ebVlZWVlZWVlYBKAoWFhYWFhYRDktWVlZWVlZWVlZWVgcZDxYWFhYWFgweUVZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWY3ZaVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVoPX19BdVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVmPR19ebVlZWVlZWVlZWTSgKEhQUFAwRNlZWVlZWUwFUVlZWVlZLHQoRFBQSCiJOVlZWVlZWVgBWVlZWVldWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVVlWVlZWVlZWVlZWVlZWVoXX19BfVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVmPR19ebVlZWVlZWVlZWVlJIIhoZHSwGVlZWVk4xJiEnLT1WVlZWTzMeGxslSFFWVlZWVlZWVgJWVlZWVmCmbVZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWe7x5VlZWVlZWVlZWVlZWVobX19BfVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVmPS19ebVlZWVlZWVlZWVlZWVU8HCFZWVlZWNhcKEhESChE0V1ZWVlYCQABUVlZWVlZWVlZWVgBWVlZWVmDXmFZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWZNWpVlZWVlZWVlZWVlZWVoLX19BfVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVmLQ19ebVlZWVlZWVlZWVlZWVlZWVlZWVlZJDREWFhYWFhQKN1ZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVmDXk1lkXFZWVlZWWGNhVlZWVlZXXFZWVlxZVlZWVlZgZFxWVlZaXFhWVlZWVlpkYVZWVlZWVmNgVlxVVlZWVlZXXFZaZF1WVlZWVqjTZVZWVlZWVlZWVlZWVlyOydZgVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVld2ttefVlZWVlZWVlZWVlZWVlZWVlZWVghEEhYWFhYWFhYRGk1WVlZWVlZWVlZWVlZWVlZWVgBWVlZWVmDTt7/VyYdWVlZ3vdbUrGRWVlaCxXJWZsSaVlZWXKLR1MqaWlaDxXRWVlZWfsDV1LhvVlZmtNXPrMSTVlZWVlZewLPA1cqJVlZWVpjXkFZWVlZWVlZWVlZWVlZWZZBfVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWWIaCVlZWVlZWVlZWVlZWVlZWVlZWVjcKFhYWFhYWFhYWCjVWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVl/Q16iMvdVzVmzPzZGd17RYVlan15hWiNe/WFZWndefiKulWVaM13pWVlZu0caKkLhxVlmz15qPxdeeVlZWVlZf1Neoi7nWe1ZWWLvXuVZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVi8KFhYWFhYWFhYWDQRWVlZWVlZWVlZWVlZWVlZWVgJWVlZWVl/Wo1ZWaNabVpfXfVZWn9dyVl3G1bhWpdbRaFZj06lWVlZWVlaL13lWVlaf1mpWVlZWVmrXqlZWcdedVlZWVlZf1q5WVmfVqVZWc9K61G1WVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVi0MFhYWFhYWFhYWDitWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVmDXlFZWWMitVq/UXlZWd9eOVnvUqc5qwbTRjlZ517GTlJOQfVaK13lWVlazz5OUlJGPYnjXi1ZWaNeeVlZWVlZf16JWVlnGuFZWo9N01Z1WVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVjMKFhYWFhYWFhYWDC5WVlZWVlZWVlZWVlZWVlZWVgBWVlZWVmDXlVZWWcitVrHTXFZWdNeQVp7SdNCXz4S9tVZ719DMzczXtVaK13dWVlaz1cvNzNTXcnfXiFZWadeeVlZWVlZf16NWVlnGuFZVy7BWscdZVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVkwPExYWFhYWFhYWCjtWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVmDXmVZWZNWeVqDXcVZWj9d6Vry8VbzNyV2e1F9n16FWVmXUqFaK14FWVlao02VXVqHXZG7XmlZWateeVlZWVlZf1qdWVmPUrFZ914dWiNd4VlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlgsChYWFhYWFhYLKgFWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVl/T0JR8tdd7VnTXv4KO0sBVYtaiVpjXq1aD131WsNCEda7XelaK18OLjV551610h9CvVlu/0YeCutecVlZWVlZf0dGWe7LXgla11WZWZtauVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlYJJEEUFhYWFAofT1ZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVl/OwM7X16NZVlaO0NfXw3JWgtWEVnXTi1Zs1JdWar7X19WbVlaI08jX13tWmdTX18BqVlZxxdfXxtadVlZWVlZf0sfO19ejWGnTrlZWVq/RZVZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWQAUZDEEMFisHVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlluYGaDclZWVlZWZoJ9XlZWZG5bVlhtXlZXbWdWVlt6hGtWVlZhbmF6f2BWVmmDfF1WVlZWX395bdeeVlZWVlZf16FlgnNWVl9vYVZWVmFvXlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZNOEg3P1ZWVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWateeVlZWVlZg16VWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWYbmdVlZWVlZbuaNWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVltmVlZWVlZWW2ZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgBWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVgAqAesEAgAAAHgjiwEIUOUCAAAAAAAAAAAAAAAAAAAAAAAAAAA=</Bytes></PictureData></CrystalReports.PictureObject>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Author</Name><Value VariantType="String">Crystal Decisions</Value></Property><Property><Name>Description</Name><Value VariantType="String">Logo for "Powered by Crystal"</Value></Property><Property><Name>ObjectDescriptor</Name><Value VariantType="String">contentSize=2685,750 fullSize=2685,750 contentOffset=0,0 cursorOffset=-2147483648,0 baselineOffset=0 analysisObjectType=10 analysisGroupLevel=0 objectType=1 isSummaryObject=0 canCopyObject=23806448 isFieldObject=7274595</Value></Property><Property><Name>Type</Name><Value VariantType="String">{5502F81F-D412-4B91-892D-2DE67EEE6DED}</Value></Property></CrystalReports.PropertyBag>


Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Author</Name><Value VariantType="String">Crystal Decisions</Value></Property><Property><Name>Description</Name><Value VariantType="String">Logo for Xtreme Mountain Bikes</Value></Property><Property><Name>ObjectDescriptor</Name><Value VariantType="String">contentSize=4200,1680 fullSize=4200,1680 contentOffset=0,0 cursorOffset=-2147483648,0 baselineOffset=0 analysisObjectType=10 analysisGroupLevel=0 objectType=1 isSummaryObject=0 canCopyObject=23805972 isFieldObject=7274595</Value></Property></CrystalReports.PropertyBag>


# OR_OBJECTDETAILS_31

Contents:
<CrystalReports.TextObject xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.TextObject" version="2"><SectionCode>0</SectionCode><SectionName></SectionName><Top>0</Top><Left>0</Left><Width>5040</Width><Height>270</Height><Kind>Text</Kind><ObjectName></ObjectName><Border xsi:type="CrystalReports.Border" id="1" version="2"><LeftLineStyle>NoLine</LeftLineStyle><RightLineStyle>NoLine</RightLineStyle><TopLineStyle>NoLine</TopLineStyle><BottomLineStyle>NoLine</BottomLineStyle><HasDropShadow>false</HasDropShadow><BackColor>-1</BackColor><BorderColor>0</BorderColor><TightHorizontal>false</TightHorizontal><ConditionFormulas/></Border><ObjectFormat xsi:type="CrystalReports.ObjectFormat" id="2" version="2"><CanGrow>false</CanGrow><Suppress>false</Suppress><CloseAtPageBreak>false</CloseAtPageBreak><KeepTogether>true</KeepTogether><HorizontalAlignment>Left</HorizontalAlignment><ToolTipText>Visit the Support Site for samples, web forums, tutorials, technical briefs and more!</ToolTipText><CssClass></CssClass><ConditionFormulas/><HyperlinkText>http://support.crystaldecisions.com</HyperlinkText><HyperlinkType>Undefined</HyperlinkType><TextRotationAngle>Rotate0</TextRotationAngle></ObjectFormat><LinkedURI></LinkedURI><ReportPartBookmark/><Paragraphs xsi:type="CrystalReports.Paragraphs" id="3" version="2"><Paragraph xsi:type="CrystalReports.Paragraph" id="4" version="2"><TabStops/><Elements xsi:type="CrystalReports.ParagraphElements" id="5" version="2"><Element xsi:type="CrystalReports.ParagraphTextElement" id="6" version="2"><FontColor xsi:type="CrystalReports.FontColor" id="7" version="2"><Color>16711680</Color><Name>Arial</Name><Size.Low>110000</Size.Low><Size.High>0</Size.High> false false false <Strikethrough>false</Strikethrough><Weight>400</Weight><Charset>1</Charset><ConditionFormulas/></FontColor><Kind>Text</Kind><Text>Crystal Care Support Site</Text><CharacterSpacing>0</CharacterSpacing></Element></Elements><IndentAndSpacingFormat xsi:type="CrystalReports.IndentAndSpacingFormat" id="9" version="2"><FirstLineIndent>0</FirstLineIndent><LeftIndent>0</LeftIndent><RightIndent>0</RightIndent><LineSpacingType>Multiple</LineSpacingType><LineSpacing>65536</LineSpacing></IndentAndSpacingFormat><Alignment>Left</Alignment><ReadingOrder>LeftToRight</ReadingOrder></Paragraph></Paragraphs><MaxNumberOfLines>0</MaxNumberOfLines><TextObjectFormat xsi:type="CrystalReports.TextObjectFormat" id="10" version="2"><SuppressIfDuplicated>false</SuppressIfDuplicated><SuppressEmbedBlankLines>false</SuppressEmbedBlankLines></TextObjectFormat></CrystalReports.TextObject>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Author</Name><Value VariantType="String">Crystal Decisions</Value></Property><Property><Name>Description</Name><Value VariantType="String">tag line: Text Object for Crystal Care</Value></Property><Property><Name>ObjectDescriptor</Name><Value VariantType="String">contentSize=5040,270 fullSize=5040,270 contentOffset=0,0 cursorOffset=199,0 baselineOffset=0 analysisObjectType=12 analysisGroupLevel=0 objectType=1 isSummaryObject=0 canCopyObject=23806888 isFieldObject=7274595</Value></Property><Property><Name>Type</Name><Value VariantType="String">{08FE72BD-FD24-485E-B3B0-6C43B7D07208}</Value></Property></CrystalReports.PropertyBag>


Contents:
<CrystalReports.TextObject xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.TextObject" version="2"><SectionCode>0</SectionCode><SectionName></SectionName><Top>0</Top><Left>0</Left><Width>6360</Width><Height>255</Height><Kind>Text</Kind><ObjectName></ObjectName><Border xsi:type="CrystalReports.Border" id="1" version="2"><LeftLineStyle>NoLine</LeftLineStyle><RightLineStyle>NoLine</RightLineStyle><TopLineStyle>NoLine</TopLineStyle><BottomLineStyle>NoLine</BottomLineStyle><HasDropShadow>false</HasDropShadow><BackColor>-1</BackColor><BorderColor>0</BorderColor><TightHorizontal>false</TightHorizontal><ConditionFormulas/></Border><ObjectFormat xsi:type="CrystalReports.ObjectFormat" id="2" version="2"><CanGrow>false</CanGrow><Suppress>false</Suppress><CloseAtPageBreak>false</CloseAtPageBreak><KeepTogether>true</KeepTogether><HorizontalAlignment>Left</HorizontalAlignment><ToolTipText></ToolTipText><CssClass></CssClass><ConditionFormulas/><HyperlinkText></HyperlinkText><HyperlinkType>Undefined</HyperlinkType><TextRotationAngle>Rotate0</TextRotationAngle></ObjectFormat><LinkedURI></LinkedURI><ReportPartBookmark/><Paragraphs xsi:type="CrystalReports.Paragraphs" id="3" version="2"><Paragraph xsi:type="CrystalReports.Paragraph" id="4" version="2"><TabStops/><Elements xsi:type="CrystalReports.ParagraphElements" id="5" version="2"><Element xsi:type="CrystalReports.ParagraphTextElement" id="6" version="2"><FontColor xsi:type="CrystalReports.FontColor" id="7" version="2"><Color>13408614</Color><Name>Arial</Name><Size.Low>100000</Size.Low><Size.High>0</Size.High> false false false <Strikethrough>false</Strikethrough><Weight>400</Weight><Charset>1</Charset><ConditionFormulas/></FontColor><Kind>Text</Kind><Text>© Copyright 2002 Crystal Decisions, Inc. All Rights Reserved.</Text><CharacterSpacing>0</CharacterSpacing></Element></Elements><IndentAndSpacingFormat xsi:type="CrystalReports.IndentAndSpacingFormat" id="9" version="2"><FirstLineIndent>0</FirstLineIndent><LeftIndent>0</LeftIndent><RightIndent>0</RightIndent><LineSpacingType>Multiple</LineSpacingType><LineSpacing>65536</LineSpacing></IndentAndSpacingFormat><Alignment>Left</Alignment><ReadingOrder>LeftToRight</ReadingOrder></Paragraph></Paragraphs><MaxNumberOfLines>0</MaxNumberOfLines><TextObjectFormat xsi:type="CrystalReports.TextObjectFormat" id="10" version="2"><SuppressIfDuplicated>false</SuppressIfDuplicated><SuppressEmbedBlankLines>false</SuppressEmbedBlankLines></TextObjectFormat></CrystalReports.TextObject>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Author</Name><Value VariantType="String">Crystal Decisions</Value></Property><Property><Name>Description</Name><Value VariantType="String">tag line: Text Object for Copyright</Value></Property><Property><Name>ObjectDescriptor</Name><Value VariantType="String">contentSize=6360,255 fullSize=6360,255 contentOffset=0,0 cursorOffset=178,0 baselineOffset=0 analysisObjectType=12 analysisGroupLevel=0 objectType=1 isSummaryObject=0 canCopyObject=23806888 isFieldObject=7274595</Value></Property><Property><Name>Type</Name><Value VariantType="String">{08FE72BD-FD24-485E-B3B0-6C43B7D07208}</Value></Property></CrystalReports.PropertyBag>


Contents:
<CrystalReports.TextObject xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.TextObject" version="2"><SectionCode>0</SectionCode><SectionName></SectionName><Top>0</Top><Left>0</Left><Width>3240</Width><Height>226</Height><Kind>Text</Kind><ObjectName></ObjectName><Border xsi:type="CrystalReports.Border" id="1" version="2"><LeftLineStyle>NoLine</LeftLineStyle><RightLineStyle>NoLine</RightLineStyle><TopLineStyle>NoLine</TopLineStyle><BottomLineStyle>NoLine</BottomLineStyle><HasDropShadow>false</HasDropShadow><BackColor>-1</BackColor><BorderColor>0</BorderColor><TightHorizontal>false</TightHorizontal><ConditionFormulas/></Border><ObjectFormat xsi:type="CrystalReports.ObjectFormat" id="2" version="2"><CanGrow>false</CanGrow><Suppress>false</Suppress><CloseAtPageBreak>false</CloseAtPageBreak><KeepTogether>true</KeepTogether><HorizontalAlignment>Right</HorizontalAlignment><ToolTipText>crfeedback@crystaldecisions.com</ToolTipText><CssClass></CssClass><ConditionFormulas/><HyperlinkText>mailto:crfeedback@crystaldecisions.com</HyperlinkText><HyperlinkType>Email</HyperlinkType><TextRotationAngle>Rotate0</TextRotationAngle></ObjectFormat><LinkedURI></LinkedURI><ReportPartBookmark/><Paragraphs xsi:type="CrystalReports.Paragraphs" id="3" version="2"><Paragraph xsi:type="CrystalReports.Paragraph" id="4" version="2"><TabStops/><Elements xsi:type="CrystalReports.ParagraphElements" id="5" version="2"><Element xsi:type="CrystalReports.ParagraphTextElement" id="6" version="2"><FontColor xsi:type="CrystalReports.FontColor" id="7" version="2"><Color>16711680</Color><Name>Arial</Name><Size.Low>100000</Size.Low><Size.High>0</Size.High> false false false <Strikethrough>false</Strikethrough><Weight>400</Weight><Charset>1</Charset><ConditionFormulas/></FontColor><Kind>Text</Kind><Text>Feedback on Samples by E-mail</Text><CharacterSpacing>0</CharacterSpacing></Element></Elements><IndentAndSpacingFormat xsi:type="CrystalReports.IndentAndSpacingFormat" id="9" version="2"><FirstLineIndent>0</FirstLineIndent><LeftIndent>0</LeftIndent><RightIndent>0</RightIndent><LineSpacingType>Multiple</LineSpacingType><LineSpacing>65536</LineSpacing></IndentAndSpacingFormat><Alignment>Right</Alignment><ReadingOrder>LeftToRight</ReadingOrder></Paragraph></Paragraphs><MaxNumberOfLines>0</MaxNumberOfLines><TextObjectFormat xsi:type="CrystalReports.TextObjectFormat" id="10" version="2"><SuppressIfDuplicated>false</SuppressIfDuplicated><SuppressEmbedBlankLines>false</SuppressEmbedBlankLines></TextObjectFormat></CrystalReports.TextObject>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Author</Name><Value VariantType="String">Crystal Decisions</Value></Property><Property><Name>Description</Name><Value VariantType="String">tag line: Text Object for Feedback </Value></Property><Property><Name>ObjectDescriptor</Name><Value VariantType="String">contentSize=3240,226 fullSize=3240,226 contentOffset=0,0 cursorOffset=178,0 baselineOffset=0 analysisObjectType=12 analysisGroupLevel=0 objectType=1 isSummaryObject=0 canCopyObject=23807664 isFieldObject=7274595</Value></Property><Property><Name>Type</Name><Value VariantType="String">{08FE72BD-FD24-485E-B3B0-6C43B7D07208}</Value></Property></CrystalReports.PropertyBag>


# OR_OBJECTDETAILS_32

Contents:
<customFunction name="cdDateAddSkipHolidays" version="1"><syntax>basic</syntax><returnType>dateTime</returnType><text>Function cdDateAddSkipHolidays (nWorkingDays As Number, startDateTime As DateTime) As DateTime
&aposthe result = startDateTime + nWorkingDays + nHolidays (including weekends)
&aposthe algorithm below also works when nWorkingDays is negative

    Dim totalDays
&aposgive a rough estimate for total days. For each 5 work days there are 7
&aposdays. Also add in an extra 2 weekend days to account for a partial week.
    totalDays = Fix(nWorkingDays * 7 / 5 + 1) + 2

    Dim iteratedDiff
    iteratedDiff = cdDateDiffSkipHolidays (startDateTime, startDateTime + totalDays)

If (iteratedDiff &gt;= nWorkingDays) Then
Do While iteratedDiff &gt;= nWorkingDays
            totalDays = totalDays - 1
            iteratedDiff = cdDateDiffSkipHolidays (startDateTime, startDateTime + totalDays)
        Loop
        cdDateAddSkipHolidays = startDateTime + totalDays + 1
    Else
Do While iteratedDiff &lt; nWorkingDays
            totalDays = totalDays + 1
            iteratedDiff = cdDateDiffSkipHolidays (startDateTime, startDateTime + totalDays)
        Loop 
        cdDateAddSkipHolidays = startDateTime + totalDays
    End If

End Function</text><arguments><argument><name>nWorkingDays</name><type>number</type><description>number of working days to add</description><defaultValues/></argument><argument><name>startDateTime</name><type>dateTime</type><description>date-time to add the working days to</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Date</category><author>Crystal Decisions</author><synopsis>Adds days to a date, skipping weekends and statutory holidays. </synopsis><helpText>cdDateAddSkipHolidays is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

nWorkingDays - a Number value representing the number of working days (i.e. excluding Saturday, Sunday and the days when statutory holidays are recognized). This can be a negative number to subtract working days.

startDateTime - a DateTime value representing the date to which the working days are added.

Returns:

A DateTime value

Action:

Returns a DateTime value, calculated by adding days to a date, skipping weekends and statutory holidays. 

Typical use:

Use this function when you want to figure out the date that your business will be able to deliver on a goal. For example, if the estimate is 100 working days from now, you can use cdDateAddSkipHolidays to determine the actual delivery date.

Examples:

Dec 22, 2000 was a Friday. Therefore,  cdDateAddSkipHolidays (1, #Dec 22, 2000#) returns Dec 27, 2000 since the weekend, Christmas day and Boxing day are skipped.

</helpText><dependees><dependee>cdDateDiffSkipHolidays</dependee></dependees></customFunction>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Category</Name><Value VariantType="String">Crystal/Date</Value></Property><Property><Name>ExposedInExperts</Name><Value VariantType="String">true</Value></Property><Property><Name>ReturnType</Name><Value VariantType="String">dateTime</Value></Property></CrystalReports.PropertyBag>


Contents:
<customFunction name="cdDateAddSkipWeekends" version="1"><syntax>basic</syntax><returnType>dateTime</returnType><text>Function cdDateAddSkipWeekends (nNonWeekendDays As Number, startDateTime As DateTime) As DateTime

&aposthe result = startDateTime + nNonWeekendDays + nWeekendDays
&aposthe algorithm below also works when nNonWeekendDays is negative

    Dim totalDays
&aposgive a rough upper bound for total days. For each 5 non weekend days there are 7
&aposdays. Also add in an extra 2 weekend days to account for a partial week.
    totalDays = Fix(nNonWeekendDays * 7 / 5 + 1) + 2

Do While cdDateDiffSkipWeekends (startDateTime, startDateTime + totalDays) &gt;= nNonWeekendDays
        totalDays = totalDays - 1
    Loop

    cdDateAddSkipWeekends = startDateTime + totalDays + 1

End Function</text><arguments><argument><name>nNonWeekendDays</name><type>number</type><description>number of days to add, skipping Saturday and Sunday</description><defaultValues/></argument><argument><name>startDateTime</name><type>dateTime</type><description>date to add the days onto</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Date</category><author>Crystal Decisions</author><synopsis>Adds days to a date, but skip Saturdays and Sundays. For example, adding 1 day to a Friday will give a Monday.</synopsis><helpText>cdDateAddSkipWeekends is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

nNonWeekendDays - a Number value representing the number of working days (i.e. excluding Saturday and Sunday). This can be a negative number to subtract working days.

startDateTime - a DateTime value representing the date to which the working days are added.

Returns:

A DateTime value

Action:

Returns a DateTime value, calculated by adding days to a date, skipping Saturdays and Sundays.

Typical use:

Use this function when you want to figure out the date that your business will be able to deliver on a goal. For example, if the estimate is 100 days from now, excluding weekends, you can use cdDateAddSkipWeekends to determine the actual delivery date.

Examples:

Dec 22, 2000 was a Friday. Therefore,  cdDateAddSkipWeekends (1, #Dec 22, 2000#) returns Dec 25, 2000 since the weekend days are skipped.


</helpText><dependees><dependee>cdDateDiffSkipWeekends</dependee></dependees></customFunction>


Contents:
<customFunction name="cdDateDiffSkipHolidays" version="1"><syntax>basic</syntax><returnType>number</returnType><text>Function cdDateDiffSkipHolidays (startDateTime As DateTime, endDateTime As DateTime) As Number

    Dim reversed
    reversed = False
If startDateTime &gt; endDateTime Then
        Dim tempDateTime
        tempDateTime = startDateTime
        startDateTime = endDateTime
        endDateTime = tempDateTime
        reversed = True
    End If

    Dim diffWithoutWeekends
    diffWithoutWeekends = cdDateDiffSkipWeekends (startDateTime, endDateTime)

    Dim startYear, endYear
    startYear = Year (startDateTime)
    endYear = Year (endDateTime)

    Dim statsInStartYear () As Date
    statsInStartYear = cdStatutoryHolidays (startYear, True)

    Dim dateRange As Date Range
    dateRange = CDate (startDateTime) To CDate (endDateTime)

    Dim numberOfStatsInRange As Number
    numberOfStatsInRange = 0

&aposWe are assuming that the number of statutory holidays in a year is always the same
    Dim numberOfStatsInOneYear
    numberOfStatsInOneYear = UBound (statsInStartYear)

    Dim i

    For i = 1 To numberOfStatsInOneYear
        If statsInStartYear (i) In dateRange Then
            numberOfStatsInRange = numberOfStatsInRange + 1
        End If
    Next i
    
If startYear &lt;&gt; endYear Then

        Dim statsInEndYear () As Date
        statsInEndYear = cdStatutoryHolidays (endYear, True)

        For i = 1 To numberOfStatsInOneYear
            If statsInEndYear (i) In dateRange Then
                numberOfStatsInRange = numberOfStatsInRange + 1
            End If
        Next i

        numberOfStatsInRange = numberOfStatsInRange + _
            (endYear - startYear - 1) * numberOfStatsInOneYear

    End If

    cdDateDiffSkipHolidays = diffWithoutWeekends - numberOfStatsInRange

&aposCan happen in rare situations e.g. The difference between Friday March 28 (Good Friday)
&aposand Saturday March 29 is -1 at this point.
If cdDateDiffSkipHolidays &lt; 0 Then cdDateDiffSkipHolidays = 0

    If reversed Then cdDateDiffSkipHolidays = -cdDateDiffSkipHolidays

End Function</text><arguments><argument><name>startDateTime</name><type>dateTime</type><description>start date-time of the period to base the difference on</description><defaultValues/></argument><argument><name>endDateTime</name><type>dateTime</type><description>end date-time of the period to base the difference on</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Date</category><author>Crystal Decisions</author><synopsis>Find the number of days difference between 2 dates, excluding weekends (Saturday and Sunday) and statutory holidays. </synopsis><helpText>cdDateDiffSkipHolidays is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

startDateTime - a DateTime value representing the start of the period on which the difference is based.

endDateTime - a DateTime value representing the end of the period on which the difference is based.

Returns: 

A Number value

Action:

Returns the number of days difference between two dates, excluding weekends (Saturday and Sunday) and statutory holidays. The statutory holidays are as recognized by Crystal Decisions&apos Vancouver office.

Typical use:

Use this function when you want to figure out the number of working days between two dates. For example, if you have an activity with a fixed start and end date, you can use cdDateDiffSkipHolidays to calculate the number of working days the activity will span.

Examples:

Dec 22, 2000 was a Friday. Therefore,  cdDateDiffSkipHolidays ( #Dec 22, 2000#, #Dec 27, 2000#) returns 1,  since the weekend, Christmas day and Boxing day are skipped.

</helpText><dependees><dependee>cdDateDiffSkipWeekends</dependee><dependee>cdStatutoryHolidays</dependee></dependees></customFunction>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Category</Name><Value VariantType="String">Crystal/Date</Value></Property><Property><Name>ExposedInExperts</Name><Value VariantType="String">true</Value></Property><Property><Name>ReturnType</Name><Value VariantType="String">number</Value></Property></CrystalReports.PropertyBag>


Contents:
<customFunction name="cdDateDiffSkipWeekends" version="1"><syntax>basic</syntax><returnType>number</returnType><text>Function cdDateDiffSkipWeekends (startDateTime As DateTime, endDateTime As DateTime) As Number

&aposthis function assumes that weekends are on Saturday and Sunday. You can modify the constants
&aposbelow to change this assumption.
    cdDateDiffSkipWeekends = _
DateDiff(&quotd&quot, startDateTime, endDateTime) - _
DateDiff(&quotww&quot, startDateTime, endDateTime, crSaturday) - _
DateDiff(&quotww&quot, startDateTime, endDateTime, crSunday)

End Function</text><arguments><argument><name>startDateTime</name><type>dateTime</type><description>first date-time in the period to find the difference for</description><defaultValues/></argument><argument><name>endDateTime</name><type>dateTime</type><description>second date-time in the period to find the difference for</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Date</category><author>Crystal Decisions</author><synopsis>Find the number of days difference between 2 dates, excluding weekends (Saturday and Sunday). For example, there is one day difference between a Friday and the following Monday.</synopsis><helpText>cdDateDiffSkipWeekends is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

startDateTime - a DateTime value representing the start of the period on which the difference is based.

endDateTime - a DateTime value representing the end of the period on which the difference is based.

Returns: 

A Number value

Action:

Returns the number of days difference between two dates, excluding weekends. 

Typical use:

Use this function when you want to figure out the number of weekdays between two dates. For example, if you have an activity with a fixed start and end date, you can use cdDateDiffSkipWeekends to calculate the number of weekdays the activity will span.

Examples:

Dec 22, 2000 was a Friday. Therefore,  cdDateDiffSkipWeekends ( #Dec 22, 2000#, #Dec 25, 2000#) returns 1,  since Saturday and Sunday are skipped.

</helpText><dependees/></customFunction>


Contents:
<customFunction name="cdEasterDate" version="1"><syntax>basic</syntax><returnType>date</returnType><text>Function cdEasterDate (y As Number) As Date

&apos EASTER DATE CALCULATION FOR YEARS 1583 TO 4099

&apos y is a 4 digit year 1583 to 4099
&apos d returns the day of the month of Easter
&apos m returns the month of Easter

&apos Easter Sunday is the Sunday following the Paschal Full Moon
&apos (PFM) date for the year

&apos This algorithm is an arithmetic interpretation of the 3 step
&apos Easter Dating Method developed by Ron Mallen 1985, as a vast
&apos improvement on the method described in the Common Prayer Book

&apos Because this algorithm is a direct translation of the
&apos official tables, it can be easily proved to be 100% correct

&apos This algorithm derives values by sequential inter-dependent
&apos calculations, so ... DO NOT MODIFY THE ORDER OF CALCULATIONS!

&apos The \ operator may be unfamiliar - it means integer division
&apos for example, 30 \ 7 = 4 (the remainder is ignored)

&apos All variables are integer data types

&apos It&aposs free! Please do not modify code or comments!
&apos ==========================================================

Dim FirstDig, Remain19, temp &aposintermediate results
Dim tA, tB, tC, tD, tE &apostable A to E results
    DIM m, d

FirstDig = y \ 100 &aposfirst 2 digits of year
Remain19 = y Mod 19 &aposremainder of year / 19

&aposcalculate PFM date
    temp = (FirstDig - 15) \ 2 + 202 - 11 * Remain19
If FirstDig &gt; 26 Then temp = temp - 1
If FirstDig &gt; 38 Then temp = temp - 1
   
&aposthis next line uses underscore (_) line continuation characters
&aposin older versions of VB you may need to revert to one long line
    If ((FirstDig = 21) Or (FirstDig = 24) Or (FirstDig = 25) _
        Or (FirstDig = 33) Or (FirstDig = 36) Or (FirstDig = 37)) _
        Then temp = temp - 1
   
    temp = temp Mod 30

    tA = temp + 21
    If temp = 29 Then tA = tA - 1
If (temp = 28 And Remain19 &gt; 10) Then tA = tA - 1
        
&aposfind the next Sunday
    tB = (tA - 19) Mod 7
    
    tC = (40 - FirstDig) Mod 4
    If tC = 3 Then tC = tC + 1
If tC &gt; 1 Then tC = tC + 1
        
    temp = y Mod 100
    tD = (temp + temp \ 4) Mod 7
    
    tE = ((20 - tB - tC - tD) Mod 7) + 1
    d = tA + tE

&aposreturn the date
If d &gt; 31 Then
        d = d - 31
        m = 4
    Else
        m = 3
    End If

    cdEasterDate = DateValue(y, m, d)

End Function</text><arguments><argument><name>y</name><type>number</type><description>4 digit year between 1583 and 4099</description><defaultValues/></argument></arguments><exposedInExperts>false</exposedInExperts><category>Crystal/Date</category><author>Web</author><synopsis>Finds the date of Easter Sunday for the given year.</synopsis><helpText>cdEasterDate is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

y - a Number value representing a 4 digit year between 1583 and 4099

Returns: 

A Date value

Action:

Returns the date of Easter Sunday for the given year. 

Typical use:

Use this function when you want to determine the date of Easter Sunday for a particular year.

Examples:

cdEasterDate (2002) returns March 31, 2002.
 
</helpText><dependees/></customFunction>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Category</Name><Value VariantType="String">Crystal/Date</Value></Property><Property><Name>ExposedInExperts</Name><Value VariantType="String">false</Value></Property><Property><Name>ReturnType</Name><Value VariantType="String">date</Value></Property></CrystalReports.PropertyBag>


Contents:
<customFunction name="cdFirstDayOfMonth" version="1"><syntax>basic</syntax><returnType>date</returnType><text>Function cdFirstDayOfMonth (Optional dayInMonth As DateTime = CurrentDate) As Date
    cdFirstDayOfMonth = CDate (Year (dayInMonth), Month (dayInMonth), 1)
End Function</text><arguments><argument><name>dayInMonth</name><type>dateTime</type><description>(Optional) a date in the desired month</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Date</category><author>Crystal Decisions</author><synopsis>Returns the date of the first day of the month. For example, if dayInMonth is March 25, 2002, the function returns March 1, 2002. If dayInMonth is not specified, it is assumed to be the current date.</synopsis><helpText>cdFirstDayOfMonth is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

dayInMonth – (Optional) a DateTime value representing a date in the desired month.  If no value is supplied, the current date will be used.

Returns: 

A Date value

Action:

Returns the date of the first day of the month.

Typical use:

Use this function when you want to determine the first day of the month for a particular date. 
.
Examples:

cdFirstDayOfMonth (#March 25, 2002# ) returns March 1, 2002.

cdDateDiffSkipHolidays(cdFirstDayOfMonth(), CurrentDate) returns the number of workdays (skipping weekends and holidays)  which have occurred to date in the current month.
</helpText><dependees/></customFunction>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Category</Name><Value VariantType="String">Crystal/Date</Value></Property><Property><Name>ExposedInExperts</Name><Value VariantType="String">true</Value></Property><Property><Name>ReturnType</Name><Value VariantType="String">date</Value></Property></CrystalReports.PropertyBag>


Contents:
<customFunction name="cdFirstDayOfQuarter" version="1"><syntax>basic</syntax><returnType>date</returnType><text>Function cdFirstDayOfQuarter (Optional dayInQuarter As DateTime = CurrentDate) As Date

    Dim y As Number
    y = Year (dayInQuarter)

Select Case DatePart (&quotq&quot, dayInQuarter)
    Case 1
        cdFirstDayOfQuarter = CDate (y, 1, 1) 
    Case 2
        cdFirstDayOfQuarter = CDate (y, 4, 1)
    Case 3
        cdFirstDayOfQuarter = CDate (y, 7, 1)
    Case 4
        cdFirstDayOfQuarter = CDate (y, 10, 1)
    End Select

End Function</text><arguments><argument><name>dayInQuarter</name><type>dateTime</type><description>(Optional) a date in the desired quarter</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Date</category><author>Crystal Decisions</author><synopsis>Returns the date of the first day of the quarter. For example, if dayInQuarter is March 25, 2002, the function returns January 1, 2002. If dayInQuarter is not specified, it is assumed to be the current date.</synopsis><helpText>cdFirstDayOfQuarter is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

dayInQuarter – (Optional) a DateTime value representing a date in the desired quarter.  If no value is supplied, the current date will be used.

Returns: 

A Date value

Action:

Returns the date of the first day of the quarter.

Typical use:

Use this function when you want to determine the first day of the quarter for a particular date. 
.
Examples:

cdFirstDayOfQuarter (#March 25, 2002# ) returns January 1, 2002.

cdDateDiffSkipHolidays(cdFirstDayOfQuarter(), CurrentDate) returns the number of workdays (skipping weekends and holidays)  which have occurred to date in the current quarter.
</helpText><dependees/></customFunction>


Contents:
<customFunction name="cdLastDayOfMonth" version="1"><syntax>basic</syntax><returnType>date</returnType><text>Function cdLastDayOfMonth (Optional dayInMonth As DateTime = CurrentDate) As Date
    cdLastDayOfMonth = DateSerial (Year (dayInMonth), Month (dayInMonth) + 1, 1 - 1)
End Function</text><arguments><argument><name>dayInMonth</name><type>dateTime</type><description>(Optional) a date in the desired month</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Date</category><author>Crystal Decisions</author><synopsis>Returns the date of the last day of the month. For example, if dayInMonth is March 25, 2002, the function returns March 31, 2002. If dayInMonth is not specified, it is assumed to be the current date.</synopsis><helpText>cdLastDayOfMonth is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

dayInMonth – (Optional) a DateTime value representing a date in the desired month.  If no value is supplied, the current date will be used.

Returns: 

A Date value

Action:

Returns the date of the last day of the month.

Typical use:

Use this function when you want to determine the last day of the month for a particular date. 
.
Examples:

cdLastDayOfMonth (#March 25, 2002# ) returns March 31, 2002.

cdDateDiffSkipHolidays(CurrentDate, cdLastDayofMonth()) returns the number of workdays (skipping weekends and holidays)  which remain in the current month.

</helpText><dependees/></customFunction>


Contents:
<customFunction name="cdLastDayOfQuarter" version="1"><syntax>basic</syntax><returnType>date</returnType><text>Function cdLastDayOfQuarter (Optional dayInQuarter As DateTime = CurrentDate) As Date

    Dim y As Number
    y = Year (dayInQuarter)

Select Case DatePart (&quotq&quot, dayInQuarter)
    Case 1
        cdLastDayOfQuarter = CDate (y, 3, 31) 
    Case 2
        cdLastDayOfQuarter = CDate (y, 6, 30)
    Case 3
        cdLastDayOfQuarter = CDate (y, 9, 30)
    Case 4
        cdLastDayOfQuarter = CDate (y, 12, 31)
    End Select

End Function
        </text><arguments><argument><name>dayInQuarter</name><type>dateTime</type><description>(Optional) a date in the desired quarter</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Date</category><author>Crystal Decisions</author><synopsis>Returns the date of the last day of the quarter. For example, if dayInQuarter is April 25, 2002, the function returns June 30, 2002. If dayInQuarter is not specified, it is assumed to be the current date.</synopsis><helpText>cdLastDayOfQuarter is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

dayInQuarter – (Optional) a DateTime value representing a date in the desired quarter.  If no value is supplied, the current date will be used.

Returns: 

A Date value

Action:

Returns the date of the last day of the quarter.

Typical use:

Use this function when you want to determine the last day of the quarter for a particular date. 
.
Examples:

cdLastDayOfQuarter (#April 25, 2002# ) returns June 30, 2002.

cdDateDiffSkipHolidays(CurrentDate, cdLastDayOfQuarter()) returns the number of workdays (skipping weekends and holidays)  which remain in the current quarter.

</helpText><dependees/></customFunction>


Contents:
<customFunction name="cdSpecialDateRange" version="1"><syntax>basic</syntax><returnType>date range</returnType><text>&apos The user supplies a reference date parameter, &quotd&quot and a range condition,
&apos &quotcondition&quot to indicate a range of dates around the reference date.

Function cdSpecialDateRange (d As Date, condition As String) As Date Range

&aposlower case condition
    condition = LCase (condition)

&aposelminate spaces
condition = Replace (condition, &quot &quot, &quot&quot)

&aposeliminate tabs
condition = Replace (condition, &quot &quot, &quot&quot)

    Select Case condition

Case LCase(&quotAged0To30Days&quot)
        cdSpecialDateRange = (d - 30) To d

Case LCase(&quotAged31To60Days&quot)
        cdSpecialDateRange = (d - 60) To (d - 31)

Case LCase(&quotAged61To90Days&quot)
        cdSpecialDateRange = (d - 90) To (d - 61)

Case LCase(&quotAllDatesFromToday&quot)
cdSpecialDateRange = Is &gt;= d

Case LCase(&quotAllDatesFromTomorrow&quot)
cdSpecialDateRange = Is &gt;= (d + 1)

Case LCase(&quotAllDatesToToday&quot)
cdSpecialDateRange = Is &lt;= d

Case LCase(&quotAllDatesToYesterday&quot)
cdSpecialDateRange = Is &lt;= (d - 1)

Case LCase(&quotCalender1stHalf&quot)
        cdSpecialDateRange = CDate(Year(d), 1, 1) To CDate(Year(d), 6, 30)

Case LCase(&quotCalendar2ndHalf&quot)
        cdSpecialDateRange = CDate(Year(d), 7, 1) To CDate(Year(d), 12, 31)

Case LCase(&quotCalendar1stQtr&quot), LCase(&quotCalendar1stQuarter&quot)
        cdSpecialDateRange = CDate(Year(d), 1, 1) To CDate(Year(d), 3, 31)

Case LCase(&quotCalendar2ndQtr&quot), LCase(&quotCalendar2ndQuarter&quot)
        cdSpecialDateRange = CDate(Year(d), 4, 1) To CDate(Year(d), 6, 30)

Case LCase(&quotCalendar3rdQtr&quot), LCase(&quotCalendar3rdQuarter&quot)
        cdSpecialDateRange = CDate(Year(d), 7, 1) To CDate(Year(d), 9, 30)

Case LCase(&quotCalendar4thQtr&quot), LCase(&quotCalendar4thQuarter&quot)
        cdSpecialDateRange = CDate(Year(d), 10, 1) To CDate(Year(d), 12, 31)

Case LCase(&quotLast4WeeksToSun&quot), LCase(&quotLast4WeeksToSunday&quot)
        cdSpecialDateRange = (d - 27 - (WeekDay(d) - 1)) To (d - (Weekday(d) - 1))

Case LCase(&quotLast7Days&quot)
        cdSpecialDateRange = (d - 6) To d

Case LCase(&quotLastFullMonth&quot)
        cdSpecialDateRange = DateSerial(Year(d), Month(d) - 1, 1) To _
                           DateSerial(Year(d), Month(d), 1 - 1)

Case LCase(&quotLastFullWeek&quot)
        cdSpecialDateRange = (d - 6 - WeekDay(d)) To (d - WeekDay(d))

Case LCase(&quotLastYearMTD&quot), LCase(&quotLastYearMonthToDate&quot)
        cdSpecialDateRange = CDate(Year(d) - 1, Month(d), 1) To _
CDate(DateAdd(&quotyyyy&quot, -1, d))

Case LCase(&quotLastYearYTD&quot), LCase(&quotLastYearYearToDate&quot)
        cdSpecialDateRange = CDate(Year(d) - 1, 1, 1) To _
CDate(DateAdd(&quotyyyy&quot, -1, d))

Case LCase(&quotMonthToDate&quot)
        cdSpecialDateRange = CDate(Year(d), Month(d), 1) To d

Case LCase(&quotNext30Days&quot)
        cdSpecialDateRange = d To (d + 30)

Case LCase(&quotNext31To60Days&quot)
        cdSpecialDateRange = (d + 31) To (d + 60)

Case LCase(&quotNext61To90Days&quot)
        cdSpecialDateRange = (d + 61) To (d + 90)

Case LCase(&quotNext91To365Days&quot)
        cdSpecialDateRange = (d + 91) To (d + 365)

Case LCase(&quotOver90Days&quot)
cdSpecialDateRange = Is &lt;= (d - 91)

Case LCase(&quotWeekToDateFromSun&quot), LCase(&quotWeekToDateFromSunday&quot)
        cdSpecialDateRange = (d- (Weekday(d) - 1)) To d

Case LCase(&quotYearToDate&quot)
        cdSpecialDateRange = CDate(Year(d), 1, 1) To d

    Case Else
&aposprovide default handling and specify a valid range
        cdSpecialDateRange = CDate(1899, 12, 30) To CDate(1899, 12, 30)

    End Select

End Function</text><arguments><argument><name>d</name><type>date</type><description>date-time to base the range on</description><defaultValues/></argument><argument><name>condition</name><type>string</type><description>the name of one of the special date ranges</description><defaultValues><defaultValue>&quotAged 0 to 30 days&quot</defaultValue><defaultValue>&quotAged 31 to 60 days&quot</defaultValue><defaultValue>&quotAged 61 to 90 days&quot</defaultValue><defaultValue>&quotAll dates from today&quot</defaultValue><defaultValue>&quotAll dates from tomorrow&quot</defaultValue><defaultValue>&quotAll dates to today&quot</defaultValue><defaultValue>&quotAll dates to yesterday&quot</defaultValue><defaultValue>&quotCalendar 1st half&quot</defaultValue><defaultValue>&quotCalendar 1st qtr&quot</defaultValue><defaultValue>&quotCalendar 2nd half&quot</defaultValue><defaultValue>&quotCalendar 2nd qtr&quot</defaultValue><defaultValue>&quotCalendar 3rd qtr&quot</defaultValue><defaultValue>&quotCalendar 4th qtr&quot</defaultValue><defaultValue>&quotLast 4 weeks to Sun&quot</defaultValue><defaultValue>&quotLast 7 days&quot</defaultValue><defaultValue>&quotLast full month&quot</defaultValue><defaultValue>&quotLast full week&quot</defaultValue><defaultValue>&quotLast year MTD&quot</defaultValue><defaultValue>&quotLast year YTD&quot</defaultValue><defaultValue>&quotMonth to date&quot</defaultValue><defaultValue>&quotNext 30 days&quot</defaultValue><defaultValue>&quotNext 31 to 60 days&quot</defaultValue><defaultValue>&quotNext 61 to 90 days&quot</defaultValue><defaultValue>&quotNext 91 to 365 days&quot</defaultValue><defaultValue>&quotOver 90 days&quot</defaultValue><defaultValue>&quotWeek to date from Sun&quot</defaultValue><defaultValue>&quotYear to date&quot</defaultValue></defaultValues></argument></arguments><exposedInExperts>false</exposedInExperts><category>Crystal/Date</category><author>Crystal Decisions</author><synopsis>This function lets you create date ranges based on a particular reference date and a description of the type of range that you want around that date. For example, if the reference date is March 25, 2004 and you select &quotYear to date&quot as the condition, then the function returns the date range from January 1, 2004 to March 25, 2004.

The special date range function such as &quotLast4WeeksToSun&quot create date ranges based on the current date.</synopsis><helpText>cdSpecialDateRange is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

d - a DateTime value representing the date upon which the range will be based.

condition - a String value representing the name of one of the special date ranges. The case of the characters, spaces, and tabs in the name are all ignored. 

The supported special date range names are listed below:

&quotAged 0 To 30 days&quot
&quotAged 31To 60 days&quot
&quotAged 61To 90 days&quot
&quotAll dates from today&quot
&quotAll dates from tomorrow&quot
&quotAll dates to today&quot
&quotAll dates to yesterday&quot
&quotCalender1st half&quot
&quotCalendar 2nd half&quot
&quotCalendar 1st qtr&quot
&quotCalendar 1st quarter&quot
&quotCalendar 2nd qtr&quot
&quotCalendar 2nd quarter&quot
&quotCalendar 3rd qtr&quot
&quotCalendar 3rd quarter&quot
&quotCalendar 4th qtr&quot
&quotCalendar 4th quarter&quot
&quotLast 4 weeks to Sun&quot
&quotLast 4 weeks to Sunday&quot
&quotLast 7 days&quot
&quotLast full month&quot
&quotLast full week&quot
&quotLast year MTD&quot
&quotLast year month to date&quot
&quotLast year YTD&quot
&quotLast year year to date&quot
&quotMonth to date&quot
&quotNext 30 days&quot
&quotNext 31 to 60 days&quot
&quotNext 61 to 90 days&quot
&quotNext 91 to 365 days&quot
&quotOver 90 days&quot
&quotWeek to date from Sun&quot
&quotWeek to date from Sunday&quot
&quotYear to date&quot
 
Returns: 

A Date Range value

Action:

Returns a Date Range value based on a particular reference date and a description of the type of range that you want around that date.

Typical use:

Use this function when you want to create a Date Range value based on a particular date.
.
Examples:

cdSpecialDateRange (CDate(#April 25, 2002#) , &quotYearToDate&quot) returns the date range from January 1, 2002 to April 25, 2002.

cdSpecialDateRange (CDate(#April 25, 2002#) , &quotAged 0 to 30 days&quot) returns the date range from March 26, 2002 to April 25, 2002.

cdSpecialDateRange (CDate(#April 25, 2002#) , &quotCalendar 4th qtr&quot) &quot) returns the date range from October 1, 2002 to December 31, 2002.









</helpText><dependees/></customFunction>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Category</Name><Value VariantType="String">Crystal/Date</Value></Property><Property><Name>ExposedInExperts</Name><Value VariantType="String">false</Value></Property><Property><Name>ReturnType</Name><Value VariantType="String">date range</Value></Property></CrystalReports.PropertyBag>


Contents:
<customFunction name="cdStatutoryHolidays" version="1"><syntax>basic</syntax><returnType>date array</returnType><text>Function cdStatutoryHolidays (y As Number, Optional asRecognized As Boolean = False) &aposreturns a Date array

    Dim holidays (10) As Date

    Dim d As Date
    Dim offset As Number
    Dim officialDay As Number

&aposNew Year&aposs day is January 1
    d = CDate (y, 1, 1)
    If asRecognized Then
        officialDay = WeekDay (d)
        Select Case officialDay
Case 1 &aposSunday
            d = d + 1
Case 7 &aposSaturday
            d = d + 2 
        End Select       
    End If   
    holidays (1) = d

&aposGood Friday is the Friday before Easter Sunday
    holidays (2) = cdEasterDate (y) - 2

&aposSince 1952 Victoria day is the Monday prior to May 25
    d = CDate (y, 5, 25)
    offset = WeekDay (d, crMonday) - 1
    holidays (3) = d - offset

&aposCanada Day is July 1
    d = CDate (y, 7, 1)
    If asRecognized Then
        officialDay = WeekDay (d)
        Select Case officialDay
Case 1 &aposSunday
            d = d + 1
Case 7 &aposSaturday
            d = d + 2 
        End Select      
    End If  
    holidays (4) = d

&aposBC day is the first Monday of August
    d = CDate (y, 8, 1)
    offset = (7 - WeekDay (d, crTuesday)) Mod 7
    holidays (5) = d + offset

&aposSince 1894 Labour day is the first Monday of September
    d = CDate (y, 9, 1)
    offset = (7 - WeekDay (d, crTuesday)) Mod 7
    holidays (6) = d + offset

&aposSince 1957 Thanksgiving day is the second Monday of October
    d = CDate (y, 10, 1)
    offset = 7 + (7 - WeekDay (d, crTuesday)) Mod 7
    holidays (7) = d + offset

&aposRemembrance day is November 11
    d = CDate (y, 11, 11)
    If asRecognized Then
        officialDay = WeekDay (d)
        Select Case officialDay
Case 1 &aposSunday
            d = d + 1
Case 7 &aposSaturday
            d = d + 2 
        End Select        
    End If  
    holidays (8) = d

&aposChristmas day is December 25
    d = CDate (y, 12, 25)
    If asRecognized Then
        officialDay = WeekDay (d)
        Select Case officialDay
Case 1 &aposSunday
            d = d + 1
Case 7 &aposSaturday
            d = d + 2 
        End Select        
    End If  
    holidays (9) = d

&aposBoxing day is December 26
    d = CDate (y, 12, 26)
    If asRecognized Then
        officialDay = WeekDay (d)
        Select Case officialDay
Case 1 &aposSunday. Christmas day will be recognized on Monday, so Boxing Day is recognized on Tuesday
            d = d + 2
Case 7 &aposSaturday
            d = d + 2 
        End Select        
    End If  
    holidays (10) = d

    cdStatutoryHolidays = holidays

End Function</text><arguments><argument><name>y</name><type>number</type><description>year to compute statutory holidays for</description><defaultValues/></argument><argument><name>asRecognized</name><type>boolean</type><description>(Optional) -  True if holidays that occur on a weekend should be shifted to Monday</description><defaultValues/></argument></arguments><exposedInExperts>false</exposedInExperts><category>Crystal/Date</category><author>Crystal Decisions</author><synopsis>StatutoryHolidays returns a Date array holding the sequentially ordered statutory holidays for the given year.</synopsis><helpText>cdStatutoryHolidays is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

y -  a Number value representing the year for which the statutory holidays are to be determined. This only makes sense for relatively recent years, since many holidays were only recently introduced. However, for business applications, this is typically not a problem!

AsRecognized – (Optional) a Boolean value with a default value of False. Some holidays, such as New Year&aposs day, can fall on a Saturday or Sunday. If asRecognized is True, then these holidays are shifted to the date that the company recognizes the holiday, which is almost always the next Monday. (If Christmas falls on a Saturday, then Boxing Day is recognized on a Tuesday).

Returns: 

A Date Array value

Action:

Returns a Date array holding the sequentially ordered statutory holidays for the given year.

The Vancouver, Canada office of Crystal Decisions recognized these 10 statutory holidays:

New Year&aposs day is January 1
Good Friday is the Friday before Easter Sunday
Since 1952 Victoria day is the Monday prior to May 25
Canada Day is July 1
BC day is the first Monday of August
Since 1894 Labour day is the first Monday of September
Since 1957 Thanksgiving day is the second Monday of October
Remembrance day is November 11
Christmas day is December 25
Boxing day is December 26

If a holiday falls on a Saturday or Sunday, then the company recognizes the holiday on the next available working day.

Typical use:

Use this function when you want to determine the list of statutory holidays for a particular year.
.
Examples:

--Crystal Syntax
--Victoria day in the year 2000
cdStatutoryHolidays(2000)[3]   returns May 22, 2000.

--Basic Syntax
--Canada day in the year 2000
cdStatutoryHolidays(2000)(4)     returns July 1, 2000




</helpText><dependees><dependee>cdEasterDate</dependee></dependees></customFunction>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Category</Name><Value VariantType="String">Crystal/Date</Value></Property><Property><Name>ExposedInExperts</Name><Value VariantType="String">false</Value></Property><Property><Name>ReturnType</Name><Value VariantType="String">date array</Value></Property></CrystalReports.PropertyBag>


Contents:
<customFunction name="cdConvertUSToCanadian" version="1"><syntax>crystal</syntax><returnType>currency</returnType><text>//ConvertUSToCanadian

Function (CurrencyVar usDollarAmount)
    //The exchange rate used by Crystal Decisions Finance for March 2001
    usDollarAmount * 1.48</text><arguments><argument><name>usDollarAmount</name><type>currency</type><description>amount in US dollars</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Finance</category><author>Crystal Decisions</author><synopsis>Converts an amount in US dollars to Canadian dollars.</synopsis><helpText>cdConvertUSToCanadian is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

usDollarAmount -  a Currency value representing the amount in US dollars to be converted to Canadian dollars.

Returns: 

A Currency value

Action:

Returns a Currency value which is the value of the amount converted to Canadian dollars.


Typical use:

Use this function when you want to convert US dollar amounts to Canadian dollars.  

Examples:

cdConvertUSToCanadian ($100.00) returns $148.00

Comments:

Since cdConvertUSToCanadian  may need to be updated frequently to use a new exchange rate, consider retaining the connection to the repository, so that reports can be automatically updated to use the latest version of the function.
</helpText><dependees/></customFunction>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Category</Name><Value VariantType="String">Crystal/Finance</Value></Property><Property><Name>ExposedInExperts</Name><Value VariantType="String">true</Value></Property><Property><Name>ReturnType</Name><Value VariantType="String">currency</Value></Property></CrystalReports.PropertyBag>


Contents:
<customFunction name="cdFormatCurrencyUsingScaling" version="1"><syntax>basic</syntax><returnType>string</returnType><text>Function cdFormatCurrencyUsingScaling (value As Currency, _
    nDecimalPlaces As Number, _
    thousandsSymbol as String, _
    millionsSymbol as String)

    nDecimalPlaces = Round (nDecimalPlaces)
If nDecimalPlaces &lt; 0 Or nDecimalPlaces &gt; 9 Then
        nDecimalPlaces = 2
    End If

If Abs (value) &gt;= 1000000 Then
        cdFormatCurrencyUsingScaling = CStr (value / 1000000, nDecimalPlaces) + millionsSymbol
ElseIf Abs (value) &gt;= 1000 Then
        cdFormatCurrencyUsingScaling = CStr (value / 1000, nDecimalPlaces) + thousandsSymbol
    Else
        cdFormatCurrencyUsingScaling = CStr (value, nDecimalPlaces)
    End If

End Function</text><arguments><argument><name>value</name><type>currency</type><description>currency value to scale, if large enough</description><defaultValues/></argument><argument><name>nDecimalPlaces</name><type>number</type><description>number of decimal places to display in scaled currency</description><defaultValues><defaultValue>2</defaultValue><defaultValue>0</defaultValue><defaultValue>1</defaultValue></defaultValues></argument><argument><name>thousandsSymbol</name><type>string</type><description>symbol to indicate scaling by thousands</description><defaultValues><defaultValue>&quotK&quot</defaultValue><defaultValue>&quot thousand&quot</defaultValue></defaultValues></argument><argument><name>millionsSymbol</name><type>string</type><description>symbol to indicate scaling by millions</description><defaultValues><defaultValue>&quotM&quot</defaultValue><defaultValue>&quot million&quot</defaultValue></defaultValues></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Format</category><author>Crystal Decisions</author><synopsis>Formats a currency into a string that is suitable for displaying in the report. Currencies larger that one thousand are scaled, with a thousands scaling factor symbol displayed. Currencies larger than one million are scaled, with a millions scaling factor symbol displayed.</synopsis><helpText>cdFormatCurrencyUsingScaling is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

value -  a Currency value to scale, if large enough

nDecimalPlaces – a Number value representing the number of decimal places to display in scaled currency.

thousandsSymbol – a String value representing the symbol to indicate scaling by thousands.

millionsSymbol – a String value representing the symbol to indicate scaling by millions


Returns: 

A String value

Action:

Returns a String value that is suitable for displaying in the report.  Currencies larger than one thousand are scaled, with a thousands scaling factor symbol displayed. Currencies larger than one million are scaled, with a millions scaling factor symbol displayed.  Currency values are rounded to the desired number of decimal places.

Typical use:

Use this function when you want to format Currency values using scaling.

Examples:

cdFormatCurrencyUsingScaling (CCur(1234567.00), 2, &quotthousand&quot, &quotmillion&quot)
returns  “$1.23 million”
</helpText><dependees/></customFunction>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Category</Name><Value VariantType="String">Crystal/Format</Value></Property><Property><Name>ExposedInExperts</Name><Value VariantType="String">true</Value></Property><Property><Name>ReturnType</Name><Value VariantType="String">string</Value></Property></CrystalReports.PropertyBag>


Contents:
<customFunction name="cdFormatDateRange" version="1"><syntax>crystal</syntax><returnType>string</returnType><text>//cdFormatDateRange

Function (DateVar range rng)
    
    DateVar minValue := Minimum (rng);
    DateVar maxValue := Maximum (rng);

    StringVar minString := CStr (minValue);
    StringVar maxString := CStr (maxValue);
   
    if HasLowerBound (rng) and HasUpperBound (rng) then
    (
        // To, _To, To_ or _To_

        if IncludesLowerBound (rng) and IncludesUpperBound (rng) then
        (
            if minValue = maxValue then
                minString
            else
&quotbetween &quot + minString + &quot and &quot + maxString
        )
        else if IncludesLowerBound (rng) then
&quotbetween &quot + minString + &quot and &quot + maxString + &quot not including right endpoint&quot
        else if IncludesUpperBound (rng) then   
&quotbetween &quot + minString + &quot and &quot + maxString + &quot not including left endpoint&quot
        else
&quotbetween &quot + minString + &quot and &quot + maxString + &quot not including endpoints&quot
    )
    else if HasLowerBound (rng) then
    (
// Is &gt; or Is &gt;=

        if IncludesLowerBound (rng) then
&quotgreater than or equal to &quot + minString
        else
&quotgreater than &quot + minString
    )
    else if HasUpperBound (rng) then
    (
// Is &lt; or Is &lt;=

        if IncludesUpperBound (rng) then
&quotless than or equal to &quot + maxString
        else
&quotless than &quot + maxString
    )</text><arguments><argument><name>rng</name><type>date range</type><description>date range value or parameter field</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Format</category><author>Crystal Decisions</author><synopsis>Formats a date range value so that it can be displayed in the report. For example, this function can be used to display the value of a date parameter field that allows ranges.
</synopsis><helpText>cdFormatDateRange is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

rng -  a Date Range value to be formatted

Returns: 

A String value

Action:

Returns a String value that is suitable for displaying in the report.

Typical use:

Use this function when you want to format Date Range Values. For example, this function can be used to display the value of a Date parameter field that allows ranges.

Examples:

cdFormatDateRange (CDate(#3/25/2002#) To CDate(#4/22/2002#)) returns
 “between 3/25/2002 and 4/22/2002”

cdFormatDateRange (UpTo CDate(#4/22/2002#)) returns 
“less than or equal to 4/22/2002”

</helpText><dependees/></customFunction>


Contents:
<customFunction name="cdFormatDateRangeArray" version="1"><syntax>basic</syntax><returnType>string</returnType><text>Function cdFormatDateRangeArray (dra () As Date Range) As String

    Dim newLine as String
    newLine = Chr (13) + Chr (10)

    Dim i, nValues
    nValues = UBound (dra)

    For i = 1 To nValues
cdFormatDateRangeArray = cdFormatDateRangeArray & cdFormatDateRange (dra (i))
If i &lt; nValues Then
cdFormatDateRangeArray = cdFormatDateRangeArray & newLine
        End If
    Next i

End Function</text><arguments><argument><name>dra</name><type>date range array</type><description>date range array value or parameter field</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Format</category><author>Crystal Decisions</author><synopsis>Formats a date range array value so that it can be displayed in the report. For example, this function can be used to display the value of a date parameter field that allows multiple values and/or ranges.

Each value is displayed on a new line, so you might need to resize the object, or alternatively check the &quotcan grow&quot formatting property to ensure that there is enough space to display all the values.</synopsis><helpText>cdFormatDateRangeArray is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

dra -  a Date Range Array value to be formatted

Returns: 

A String value

Action:

Returns a String value that is suitable for displaying in the report. Each Date Range value is displayed on a new line, so you might need to resize the object, or alternatively check the &quotcan grow&quot formatting property to ensure that there is enough space to display all the values.

Typical use:

Use this function when you want to format Date Range Array Values. For example, this function can be used to display the value of a Date parameter field that allows multiple values and/or ranges.

Examples:

Basic Syntax:

cdFormatDateRangeArray (Array (CDate (2002, 05, 13) To CDate (2002, 05, 17), Is &gt; CDate (2002, 04, 01))) returns

between 5/13/2002 and 5/17/2002
greater than 4/1/2002  

Crystal Syntax:

cdFormatDateRangeArray ([Is &lt; CDate (2002, 02, 13), CDate (2002, 04, 01) To CDate (2002, 04, 30)]) returns

less than 2/13/2002
between 4/1/2002 and 4/30/2002  
</helpText><dependees><dependee>cdFormatDateRange</dependee></dependees></customFunction>


Contents:
<customFunction name="cdFormatNumberRange" version="1"><syntax>crystal</syntax><returnType>string</returnType><text>//cdFormatNumberRange

Function (NumberVar range rng)
    
    NumberVar minValue := Minimum (rng);
    NumberVar maxValue := Maximum (rng);

    StringVar minString := CStr (minValue);
    StringVar maxString := CStr (maxValue);
   
    if HasLowerBound (rng) and HasUpperBound (rng) then
    (
        // To, _To, To_ or _To_

        if IncludesLowerBound (rng) and IncludesUpperBound (rng) then
        (
            if minValue = maxValue then
                minString
            else
&quotbetween &quot + minString + &quot and &quot + maxString
        )
        else if IncludesLowerBound (rng) then
&quotbetween &quot + minString + &quot and &quot + maxString + &quot not including right endpoint&quot
        else if IncludesUpperBound (rng) then   
&quotbetween &quot + minString + &quot and &quot + maxString + &quot not including left endpoint&quot
        else
&quotbetween &quot + minString + &quot and &quot + maxString + &quot not including endpoints&quot
    )
    else if HasLowerBound (rng) then
    (
// Is &gt; or Is &gt;=

        if IncludesLowerBound (rng) then
&quotgreater than or equal to &quot + minString
        else
&quotgreater than &quot + minString
    )
    else if HasUpperBound (rng) then
    (
// Is &lt; or Is &lt;=

        if IncludesUpperBound (rng) then
&quotless than or equal to &quot + maxString
        else
&quotless than &quot + maxString
    )</text><arguments><argument><name>rng</name><type>number range</type><description>number range value or parameter field</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Format</category><author>Crystal Decisions</author><synopsis>Formats a number range value so that it can be displayed in the report. For example, this function can be used to display the value of a number parameter field that allows ranges.</synopsis><helpText>cdFormatNumberRange is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

rng -  a Number Range value to be formatted

Returns: 

A String value

Action:

Returns a String value that is suitable for displaying in the report.

Typical use:

Use this function when you want to format Number Range Values. For example, this function can be used to display the value of a Number parameter field that allows ranges.

Examples:

cdFormatNumberRange (1 To 10) returns
 “between 1.00 and 10.00”

</helpText><dependees/></customFunction>


Contents:
<customFunction name="cdFormatNumberRangeArray" version="1"><syntax>basic</syntax><returnType>string</returnType><text>Function cdFormatNumberRangeArray (nra () As Number Range) As String

    Dim newLine as String
    newLine = Chr (13) + Chr (10)

    Dim i, nValues
    nValues = UBound (nra)

    For i = 1 To nValues
cdFormatNumberRangeArray = cdFormatNumberRangeArray & cdFormatNumberRange (nra (i))
If i &lt; nValues Then
cdFormatNumberRangeArray = cdFormatNumberRangeArray & newLine
        End If
    Next i

End Function</text><arguments><argument><name>nra</name><type>number range array</type><description>number range value or parameter field</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Format</category><author>Crystal Decisions</author><synopsis>Formats a number range array value so that it can be displayed in the report. For example, this function can be used to display the value of a number parameter field that allows multiple values and/or ranges.

Each value is displayed on a new line, so you might need to resize the object, or alternatively check the &quotcan grow&quot formatting property to ensure that there is enough space to display all the values.</synopsis><helpText>cdFormatNumberRangeArray is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

nra -  a Number Range Array value to be formatted

Returns: 

A String value

Action:

Returns a String value that is suitable for displaying in the report. Each Number Range value is displayed on a new line, so you might need to resize the object, or alternatively check the &quotcan grow&quot formatting property to ensure that there is enough space to display all the values.

Typical use:

Use this function when you want to format Number Range Array Values. For example, this function can be used to display the value of a Number parameter field that allows multiple values and/or ranges.

Examples:

Basic Syntax:

cdFormatNumberRangeArray (Array (Is &gt; 5, 0 _To 18)) returns

greater than 5.00
between 0.00 and 18.00 not including left endpoint  

Crystal Syntax:

cdFormatNumberRangeArray ([1 To 10, upTo 100]) returns

between 1.00 and 10.00
less than or equal to 100.00  
</helpText><dependees><dependee>cdFormatNumberRange</dependee></dependees></customFunction>


Contents:
<customFunction name="cdFormatNumberUsingScaling" version="1"><syntax>basic</syntax><returnType>string</returnType><text>Function cdFormatNumberUsingScaling (value As Number, _
    nDecimalPlaces As Number, _
    thousandsSymbol as String, _
    millionsSymbol as String)

    nDecimalPlaces = Round (nDecimalPlaces)
If nDecimalPlaces &lt; 0 Or nDecimalPlaces &gt; 9 Then
        nDecimalPlaces = 2
    End If

If Abs (value) &gt;= 1000000 Then
        cdFormatNumberUsingScaling = CStr (value / 1000000, nDecimalPlaces) + millionsSymbol
ElseIf Abs (value) &gt;= 1000 Then
        cdFormatNumberUsingScaling = CStr (value / 1000, nDecimalPlaces) + thousandsSymbol
    Else
        cdFormatNumberUsingScaling = CStr (value, nDecimalPlaces)
    End If

End Function</text><arguments><argument><name>value</name><type>number</type><description>number value to scale, if large enough</description><defaultValues/></argument><argument><name>nDecimalPlaces</name><type>number</type><description>number of decimal places to display in scaled number</description><defaultValues><defaultValue>2</defaultValue><defaultValue>0</defaultValue><defaultValue>1</defaultValue></defaultValues></argument><argument><name>thousandsSymbol</name><type>string</type><description>symbol to indicate scaling by thousands</description><defaultValues><defaultValue>&quotK&quot</defaultValue><defaultValue>&quot thousand&quot</defaultValue></defaultValues></argument><argument><name>millionsSymbol</name><type>string</type><description>symbol to indicate scaling by millions</description><defaultValues><defaultValue>&quotM&quot</defaultValue><defaultValue>&quot million&quot</defaultValue></defaultValues></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Format</category><author>Crystal Decisions</author><synopsis>Formats a number into a string that is suitable for displaying in the report. Numbers larger that one thousand are scaled, with a thousands scaling factor symbol displayed. Numbers larger than one million are scaled, with a millions scaling factor symbol displayed.</synopsis><helpText>cdFormatNumberUsingScaling is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

value -  a Number value to scale, if large enough

nDecimalPlaces – a Number value representing the number of decimal places to display in scaled currency.

thousandsSymbol – a String value representing the symbol to indicate scaling by thousands.

millionsSymbol – a String value representing the symbol to indicate scaling by millions

Returns: 

A String value

Action:

Returns a String value that is suitable for displaying in the report.  Numbers larger than one thousand are scaled, with a thousands scaling factor symbol displayed. Numbers larger than one million are scaled, with a millions scaling factor symbol displayed. Number values are rounded to the desired number of decimal places.

Typical use:

Use this function when you want to format Numbr values using scaling.

Examples:

cdFormatCurrencyUsingScaling (1234567 , 2, &quotthousand&quot, &quotmillion&quot)
returns  “1.23 million”

In order to format a Currency value in a cross-tab cell, the Display String formatting formula could be set to:

cdFormatCurrencyUsingScaling (CurrentFieldValue,1 ,&quotK&quot ,&quotM&quot )

</helpText><dependees/></customFunction>


Contents:
<customFunction name="cdFormatStringRange" version="1"><syntax>crystal</syntax><returnType>string</returnType><text>//cdFormatStringRange

Function (StringVar range rng)
    
    StringVar minValue := Minimum (rng);
    StringVar maxValue := Maximum (rng);

    StringVar minString := CStr (minValue);
    StringVar maxString := CStr (maxValue);
   
    if HasLowerBound (rng) and HasUpperBound (rng) then
    (
        // To, _To, To_ or _To_

        if IncludesLowerBound (rng) and IncludesUpperBound (rng) then
        (
            if minValue = maxValue then
                minString
            else
&quotbetween &quot + minString + &quot and &quot + maxString
        )
        else if IncludesLowerBound (rng) then
&quotbetween &quot + minString + &quot and &quot + maxString + &quot not including right endpoint&quot
        else if IncludesUpperBound (rng) then   
&quotbetween &quot + minString + &quot and &quot + maxString + &quot not including left endpoint&quot
        else
&quotbetween &quot + minString + &quot and &quot + maxString + &quot not including endpoints&quot
    )
    else if HasLowerBound (rng) then
    (
// Is &gt; or Is &gt;=

        if IncludesLowerBound (rng) then
&quotgreater than or equal to &quot + minString
        else
&quotgreater than &quot + minString
    )
    else if HasUpperBound (rng) then
    (
// Is &lt; or Is &lt;=

        if IncludesUpperBound (rng) then
&quotless than or equal to &quot + maxString
        else
&quotless than &quot + maxString
    )</text><arguments><argument><name>rng</name><type>string range</type><description>string range value or parameter field</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Format</category><author>Crystal Decisions</author><synopsis>Formats a string range value so that it can be displayed in the report. For example, this function can be used to display the value of a string parameter field that allows ranges.</synopsis><helpText>cdFormatStringRange is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

rng -  a String Range value to be formatted.

Returns: 

A String value

Action:

Returns a String value that is suitable for displaying in the report.

Typical use:

Use this function when you want to format String Range Values. For example, this function can be used to display the value of a String parameter field that allows ranges.

Examples:

cdFormatStringRange (&quotapple&quot To &quotapricot&quot) returns
 “between apple and apricot”
</helpText><dependees/></customFunction>


Contents:
<customFunction name="cdFormatStringRangeArray" version="1"><syntax>basic</syntax><returnType>string</returnType><text>Function cdFormatStringRangeArray (sra () As String Range) As String

    Dim newLine as String
    newLine = Chr (13) + Chr (10)

    Dim i, nValues
    nValues = UBound (sra)

    For i = 1 To nValues
cdFormatStringRangeArray = cdFormatStringRangeArray & cdFormatStringRange (sra (i))
If i &lt; nValues Then
cdFormatStringRangeArray = cdFormatStringRangeArray & newLine
        End If
    Next i

End Function
</text><arguments><argument><name>sra</name><type>string range array</type><description>number range value or parameter field</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Format</category><author>Crystal Decisions</author><synopsis>Formats a string range array value so that it can be displayed in the report. For example, this function can be used to display the value of a string parameter field that allows multiple values and/or ranges.

Each value is displayed on a new line, so you might need to resize the object, or alternatively check the &quotcan grow&quot formatting property to ensure that there is enough space to display all the values.</synopsis><helpText>cdFormatStringRangeArray is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

sra -  a String Range Array value to be formatted

Returns: 

A String value

Action:

Returns a String value that is suitable for displaying in the report. Each String Range value is displayed on a new line, so you might need to resize the object, or alternatively check the &quotcan grow&quot formatting property to ensure that there is enough space to display all the values.

Typical use:

Use this function when you want to format String Range Array Values. For example, this function can be used to display the value of a String parameter field that allows multiple values and/or ranges.

Examples:

Basic Syntax:

cdFormatStringRangeArray (Array (&quota&quot To &quotg&quot, &quoth&quot To &quotp&quot, &quotq&quot To &quotz&quot)) returns

between a and g
between h and p
between q and z  


Crystal Syntax:

cdFormatStringRangeArray ([&quotapple&quot To &quotorange&quot, upTo_ &quotzebra&quot]) returns

between apple and orange
less than zebra  
</helpText><dependees><dependee>cdFormatStringRange</dependee></dependees></customFunction>


Contents:
<customFunction name="cdFormatTimeInterval" version="1"><syntax>basic</syntax><returnType>string</returnType><text>Function cdFormatTimeInterval ( _
    timeInterval As Number, _
    baseUnit As String, _ 
    roundTo As String, _ 
    daysSymbol As String, _
    hoursSymbol As String, _
    minutesSymbol As String _
    ) As String

&aposensure that baseUnit is one of: days, hours
    baseUnit = LCase (baseUnit)
If Not (baseUnit In Array (&quotdays&quot, &quothours&quot)) Then
baseUnit = &quotdays&quot
    End If

&aposensure that roundTo is one of: days, hours or minutes
    roundTo = LCase (roundTo)
If Not (roundTo In Array (&quotdays&quot, &quothours&quot, &quotminutes&quot)) Then
roundTo = &quotminutes&quot
    End If
  
&aposensure that baseUnit is not finer grained than roundTo
If roundTo = &quotdays&quot Then
baseUnit = &quotdays&quot
    End If
     
    Dim days, hours, minutes, timeRemaining, signOfResult

    signOfResult = sgn (timeInterval)
    timeInterval = abs (timeInterval)

    Select Case roundTo

Case &quotdays&quot
        days = Round (timeInterval)
If days = 1 And Trim (daysSymbol) = &quotdays&quot Then
daysSymbol = Replace (daysSymbol, &quots&quot, &quot&quot)
        End If

cdFormatTimeInterval = CStr (days, 0) & daysSymbol

Case &quothours&quot
If baseUnit = &quotdays&quot Then
&apostimeRemaining in fractional days
            timeRemaining = timeInterval
            days = Int (timeRemaining)

&apostimeRemaining in hours
            timeRemaining = (timeRemaining - days) * 24 
            hours = Round (timeRemaining)
        
&aposhandle rounding to the nearest hour
            If hours = 24 Then
                days = days + 1
                hours = 0
            End If

cdFormatTimeInterval = CStr (days, 0) & daysSymbol & CStr (hours, 0) & hoursSymbol
        Else
            hours = Round (timeInterval * 24)
            If hours = 1 Then
If Trim (hoursSymbol) In Array (&quothrs&quot, &quothours&quot) Then
hoursSymbol = Replace (hoursSymbol, &quots&quot, &quot&quot)
                End If
            End If

cdFormatTimeInterval = CStr (hours, 0) & hoursSymbol
        End If

Case &quotminutes&quot

If baseUnit = &quotdays&quot Then
&apostimeRemaining in fractional days
            timeRemaining = timeInterval
            days = Int (timeRemaining)

&apostimeRemaining in fractional hours
            timeRemaining = (timeRemaining - days) * 24 
            hours = Int (timeRemaining)

&apostimeRemaining is fractional minutes
            timeRemaining = (timeRemaining - hours) * 60 
            minutes = Round (timeRemaining)

&aposhandle rounding to the nearest minute
&aposFor example, 2d 23h 60m is rounded to 3d 0h 0m
            If minutes = 60 Then
                hours = hours + 1
                minutes = 0
                If hours = 24 Then
                    days = days + 1
                    hours = 0
                End If
            End If

cdFormatTimeInterval = CStr (days, 0) & daysSymbol & _
CStr (hours, 0) & hoursSymbol & CStr (minutes, 0) & minutesSymbol

ElseIf baseUnit = &quothours&quot Then

&apostimeRemaining in fractional hours
            timeRemaining = timeInterval * 24 
            hours = Int (timeRemaining)

&apostimeRemaining is fractional minutes
            timeRemaining = (timeRemaining - hours) * 60 
            minutes = Round (timeRemaining)

&aposhandle rounding to the nearest minute
&aposFor example, 23h 60m is rounded to 24h 0m
            If minutes = 60 Then
                hours = hours + 1
                minutes = 0
            End If

cdFormatTimeInterval = CStr (hours, 0) & hoursSymbol & CStr (minutes, 0) & minutesSymbol
        End If
            
    End Select

If days = 1 And Trim (daysSymbol) = &quotdays&quot Then
cdFormatTimeInterval = Replace (cdFormatTimeInterval, &quotdays&quot, &quotday&quot)
    End If

    If hours = 1 Then
        Select Case Trim (hoursSymbol)
Case &quothours&quot
cdFormatTimeInterval = Replace (cdFormatTimeInterval, &quothours&quot, &quothour&quot)
Case &quothrs&quot
cdFormatTimeInterval = Replace (cdFormatTimeInterval, &quothrs&quot, &quothr&quot)
        End Select
    End If

    If minutes = 1 Then
        Select Case Trim (minutesSymbol)
Case &quotminutes&quot
cdFormatTimeInterval = Replace (cdFormatTimeInterval, &quotminutes&quot, &quotminute&quot)
Case &quotmins&quot
cdFormatTimeInterval = Replace (cdFormatTimeInterval, &quotmins&quot, &quotmin&quot)
        End Select
    End If

    If signOfResult = -1 Then
cdFormatTimeInterval = &quot- &quot + cdFormatTimeInterval
    End If

End Function</text><arguments><argument><name>timeInterval</name><type>number</type><description>time interval in fractional days to format</description><defaultValues/></argument><argument><name>baseUnit</name><type>string</type><description>largest unit used to display the time interval</description><defaultValues><defaultValue>&quotdays&quot</defaultValue><defaultValue>&quothours&quot</defaultValue></defaultValues></argument><argument><name>roundTo</name><type>string</type><description>smallest unit used to display the time interval</description><defaultValues><defaultValue>&quotminutes&quot</defaultValue><defaultValue>&quothours&quot</defaultValue><defaultValue>&quotdays&quot</defaultValue></defaultValues></argument><argument><name>daysSymbol</name><type>string</type><description>symbol following the number of days</description><defaultValues><defaultValue>&quotd &quot</defaultValue><defaultValue>&quot days &quot</defaultValue></defaultValues></argument><argument><name>hoursSymbol</name><type>string</type><description>symbol following the number of hours</description><defaultValues><defaultValue>&quoth &quot</defaultValue><defaultValue>&quot hrs &quot</defaultValue><defaultValue>&quot hours &quot</defaultValue></defaultValues></argument><argument><name>minutesSymbol</name><type>string</type><description>symbol following the number of minutes</description><defaultValues><defaultValue>&quotm &quot</defaultValue><defaultValue>&quot mins &quot</defaultValue><defaultValue>&quot minutes &quot</defaultValue></defaultValues></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Format</category><author>Crystal Decisions</author><synopsis>Formats a time interval in fractional days e.g. 2.56 is displayed as: 2d 18h 14m using the default settings. A common way of getting a time interval in fractional days is to subtract 2 date-time values.

</synopsis><helpText>cdFormatTimeInterval  is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

timeInterval -  a Number value representing a time interval in fractional days. (A common way of getting a time interval in fractional days is to subtract two date-time values.)

baseUnit - a String value representing the largest unit used to display the time interval. Supported values are: &quotdays&quot, &quothours&quot

roundTo - a String value representing the smallest unit used to display the time interval. Supported values are: &quotdays&quot, &quothours&quot, &quotminutes&quot

daysSymbol - a String value representing the symbol which will be displayed following the number of days.

hoursSymbol - a String value representing the symbol which will be displayed following the number of hours.

minutesSymbol - a String value representing the symbol which will be displayed following the number of minutes.


Returns: 

A String value

Action:

Returns a String value that is suitable for displaying in the report.

Typical use:

Use this function when you want to format time intervals which are in fractional days.

Examples:

cdFormatTimeInterval (2.56, &quotdays&quot, &quotminutes&quot, &quotd&quot, &quoth&quot, &quotm&quot) returns
&quot2d 13h 26m&quot

cdFormatTimeInterval (0.015, &quothours&quot, &quotminutes&quot, &quotdays &quot, &quothours &quot, &quotminutes &quot) returns
&quothours 22minutes&quot
</helpText><dependees/></customFunction>


Contents:
<customFunction name="cdExpandRegionAbbreviation" version="1"><syntax>basic</syntax><returnType>string</returnType><text>Function cdExpandRegionAbbreviation (regionAbbreviation As String, Optional country As String = &quotUSA&quot)

    Select Case UCase (country)

Case &quotCANADA&quot
        cdExpandRegionAbbreviation = cdExpandRegionAbbreviationCanada (regionAbbreviation)

Case &quotUSA&quot, &quotU.S.A.&quot, &quotUS&quot, &quotU.S.&quot, &quotUNITED STATES&quot, &quotUNITED STATES OF AMERICA&quot
        cdExpandRegionAbbreviation = cdExpandRegionAbbreviationUSA (regionAbbreviation)

    Case Else
        cdExpandRegionAbbreviation = regionAbbreviation 

    End Select

End Function</text><arguments><argument><name>regionAbbreviation</name><type>string</type><description>region abbreviation to expand </description><defaultValues/></argument><argument><name>country</name><type>string</type><description>name of the country containing the region</description><defaultValues><defaultValue>&quotUSA&quot</defaultValue><defaultValue>&quotCanada&quot</defaultValue></defaultValues></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Geographic</category><author>Crystal Decisions</author><synopsis>Expands the abbreviated name of a region (such as a U.S. state or Canadian province) into its full form.</synopsis><helpText>cdExpandRegionAbbreviation is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

regionAbbreviation – a String value representing the region abbreviation to expand.

country -  (Optional) a String value representing the name of the country containing the region.  Case is ignored. If no value is supplied, “USA” will be used. The supported countries are Canada and USA.

Returns: 

A String value

Action:

Returns a String value that is the expansion of the region abbreviation.

Typical use:

Use this function when you want to provide fully expanded names for regions with abbreviated names.  For example, when grouping on region, you may want to add a group name formula which expands the region abbreviation so that the label appearing in the group tree will be more readable.

Examples:

cdExpandRegionAbbreviation (&quotBC&quot, &quotCanada&quot) returns “British Columbia”.
</helpText><dependees><dependee>cdExpandRegionAbbreviationCanada</dependee><dependee>cdExpandRegionAbbreviationUSA</dependee></dependees></customFunction>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Category</Name><Value VariantType="String">Crystal/Geographic</Value></Property><Property><Name>ExposedInExperts</Name><Value VariantType="String">true</Value></Property><Property><Name>ReturnType</Name><Value VariantType="String">string</Value></Property></CrystalReports.PropertyBag>


Contents:
<customFunction name="cdExpandRegionAbbreviationCanada" version="1"><syntax>crystal</syntax><returnType>string</returnType><text>//cdExpandRegionAbbreviationCanada

Function (stringVar abbreviation)

    if length (abbreviation) = 2 then 
    (
        select UpperCase (abbreviation)

        // Canadian provinces and territories

case &quotAB&quot:
&quotAlberta&quot
case &quotBC&quot:
&quotBritish Columbia&quot
case &quotMB&quot:
&quotManitoba&quot
case &quotNB&quot:
&quotNew Brunswick&quot
case &quotNF&quot:
&quotNewfoundland&quot
case &quotNS&quot:
&quotNova Scotia&quot
case &quotNT&quot:
&quotNorthwest Territories&quot
case &quotNU&quot:
&quotNunavut&quot
case &quotON&quot:
&quotOntario&quot
case &quotPE&quot:
&quotPrince Edward Island&quot
case &quotQC&quot, &quotPQ&quot:
&quotQuébec&quot
case &quotSK&quot:
&quotSaskatchewan&quot
case &quotYT&quot:
&quotYukon Territory&quot

        default:
            abbreviation;
    )
    else
abbreviation;</text><arguments><argument><name>abbreviation</name><type>string</type><description>abbreviated name of a Canadian province</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Geographic</category><author>Crystal Decisions</author><synopsis>Expands the abbreviated name of a Canadian province, such as &quotBC&quot to its full form &quotBritish Columbia&quot. All other abbreviations are left unchanged.</synopsis><helpText>cdExpandAbbreviationCanada is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

abbreviation – a String value representing the abbreviation for a Canadian province or territory. Case is ignored. 

Returns: 

A String value

Action:

Returns a String value that is the expansion of the region abbreviation. Unsupported abbreviations are returned unchanged.

Typical use:

Use this function when you want to provide fully expanded names for regions with abbreviated names.

Examples:

cdExpandAbbreviationCanada (&quotBC&quot) returns “British Columbia”.
</helpText><dependees/></customFunction>


Contents:
<customFunction name="cdExpandRegionAbbreviationUSA" version="1"><syntax>crystal</syntax><returnType>string</returnType><text>//cdExpandRegionAbbreviationUSA

Function (stringVar abbreviation)

    if length (abbreviation) = 2 then
    (
        select UpperCase (abbreviation)

        //US states
case &quotAA&quot:
&quotArmed Forces Americas&quot
case &quotAE&quot:
&quotArmed Forces Europe&quot
case &quotAL&quot:
&quotAlabama&quot
case &quotAK&quot:
&quotAlaska&quot
case &quotAP&quot:
&quotArmed Forces Pacific&quot
case &quotAR&quot:
&quotArkansas&quot
case &quotAS&quot:
&quotAmerican Samoa&quot
case &quotAZ&quot:
&quotArizona&quot
case &quotCA&quot:
&quotCalifornia&quot
case &quotCO&quot:
&quotColorado&quot
case &quotCT&quot:
&quotConnecticut&quot
case &quotDC&quot:
&quotDistrict of Columbia&quot
case &quotDE&quot:
&quotDelaware&quot
case &quotFL&quot:
&quotFlorida&quot
case &quotFM&quot:
&quotFederated States of Micronesia&quot
case &quotGA&quot:
&quotGeorgia&quot
case &quotGU&quot:
&quotGuam&quot
case &quotHI&quot:
&quotHawaii&quot
case &quotIA&quot:
&quotIowa&quot
case &quotID&quot:
&quotIdaho&quot
case &quotIL&quot:
&quotIllinois&quot
case &quotIN&quot:
&quotIndiana&quot
case &quotKS&quot:
&quotKansas&quot
case &quotKY&quot:
&quotKentucky&quot
case &quotLA&quot:
&quotLouisiana&quot
case &quotMA&quot:
&quotMassachusetts&quot
case &quotMD&quot:
&quotMaryland&quot
case &quotME&quot:
&quotMaine&quot
case &quotMH&quot:
&quotMarshall Islands&quot
case &quotMI&quot:
&quotMichigan&quot
case &quotMN&quot:
&quotMinnesota&quot
case &quotMO&quot:
&quotMissouri&quot
case &quotMP&quot:
&quotNorthern Mariana Islands&quot
case &quotMS&quot:
&quotMississippi&quot
case &quotMT&quot:
&quotMontana&quot
case &quotNE&quot:
&quotNebraska&quot
case &quotNC&quot:
&quotNorth Carolina&quot
case &quotND&quot:
&quotNorth Dakota&quot
case &quotNH&quot:
&quotNew Hampshire&quot
case &quotNJ&quot:
&quotNew Jersey&quot
case &quotNM&quot:
&quotNew Mexico&quot
case &quotNV&quot:
&quotNevada&quot
case &quotNY&quot:
&quotNew York&quot
case &quotOH&quot:
&quotOhio&quot
case &quotOK&quot:
&quotOklahoma&quot
case &quotOR&quot:
&quotOregon&quot
case &quotPA&quot:
&quotPennsylvania&quot
case &quotRI&quot:
&quotRhode Island&quot
case &quotPR&quot:
&quotPuerto Rico&quot
case &quotSC&quot:
&quotSouth Carolina&quot
case &quotSD&quot:
&quotSouth Dakota&quot
case &quotTN&quot:
&quotTennessee&quot
case &quotTX&quot:
&quotTexas&quot
case &quotUT&quot:
&quotUtah&quot
case &quotVA&quot:
&quotVirginia&quot
case &quotVI&quot:
&quotVirgin Islands&quot
case &quotVT&quot:
&quotVermont&quot
case &quotWA&quot:
&quotWashington&quot
case &quotWI&quot:
&quotWisconsin&quot
case &quotWV&quot:
&quotWest Virginia&quot
case &quotWY&quot:
&quotWyoming&quot
    
        default:
            abbreviation;
    )
    else
        abbreviation;

</text><arguments><argument><name>abbreviation</name><type>string</type><description>abbreviated name of U.S. state</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Geographic</category><author>Crystal Decisions</author><synopsis>Expands the abbreviated name of a U.S. state, such as &quotCA&quot to its full form &quotCalifornia&quot. All other abbreviations are left unchanged.</synopsis><helpText>cdExpandAbbreviationUSA is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

abbreviation – a String value representing the abbreviation for a U.S. state. Case is ignored. 

Returns: 

A String value

Action:

Returns a String value that is the expansion of the region abbreviation. . Unsupported abbreviations are returned unchanged.

Typical use:

Use this function when you want to provide fully expanded names for regions with abbreviated names.

Examples:

cdExpandRegionAbbreviationUSA (&quotCA&quot) returns “California”.


</helpText><dependees/></customFunction>


Contents:
<customFunction name="cdIncreaseCurrencyByAPercentage" version="1"><syntax>crystal</syntax><returnType>currency</returnType><text>//cdIncreaseCurrencyByAPercentage

Function (CurrencyVar valueToIncrease, NumberVar percentIncrease)
   
valueToIncrease + valueToIncrease * percentIncrease / 100;</text><arguments><argument><name>valueToIncrease</name><type>currency</type><description>currency value to increase by a percentage</description><defaultValues/></argument><argument><name>percentIncrease</name><type>number</type><description>percent to increase value by e.g. 10</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Math</category><author>Crystal Decisions</author><synopsis>Increase a currency by a given percentage. For example, if the valueToIncrease is $200 and percentToIncrease is 10 then the result is $220.</synopsis><helpText>cdIncreaseCurrencyByAPercentage  is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

valueToIncrease – a Currency value representing the value to increase by a percentage.

percentageIncrease – a Number value representing the percentage by which the value is to be increased.

Returns: 

A Currency value

Action:

Returns a Currency value which is the supplied value increased by the given percentage.

Typical use:

Use this function when you want to increase a Currency value by a given percentage.

Examples:

cdIncreaseCurrencyByAPercentage ($200.00, 10) returns $220.00
</helpText><dependees/></customFunction>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Category</Name><Value VariantType="String">Crystal/Math</Value></Property><Property><Name>ExposedInExperts</Name><Value VariantType="String">true</Value></Property><Property><Name>ReturnType</Name><Value VariantType="String">currency</Value></Property></CrystalReports.PropertyBag>


Contents:
<customFunction name="cdIncreaseNumberByAPercentage" version="1"><syntax>crystal</syntax><returnType>number</returnType><text>//cdIncreaseNumberByAPercentage

Function (NumberVar valueToIncrease, NumberVar percentIncrease)
   
valueToIncrease + valueToIncrease * percentIncrease / 100;</text><arguments><argument><name>valueToIncrease</name><type>number</type><description>number value to increase by a percentage</description><defaultValues/></argument><argument><name>percentIncrease</name><type>number</type><description>percent to increase value by e.g. 10</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Math</category><author>Crystal Decisions</author><synopsis>Increase a number by a given percentage. For example, if the valueToIncrease is 200 and percentToIncrease is 10 then the result is 220.</synopsis><helpText>cdIncreaseNumberByAPercentage  is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

valueToIncrease – a Number value representing the value to increase by a percentage.

percentageIncrease – a Number value representing the percentage by which the value is to be increased.

Returns: 

A Number value

Action:

Returns a Number value which is the supplied value increased by the given percentage.

Typical use:

Use this function when you want to increase a Number value by a given percentage.

Examples:

cdIncreaseNumberByAPercentage (200, 10) returns 220.00

</helpText><dependees/></customFunction>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Category</Name><Value VariantType="String">Crystal/Math</Value></Property><Property><Name>ExposedInExperts</Name><Value VariantType="String">true</Value></Property><Property><Name>ReturnType</Name><Value VariantType="String">number</Value></Property></CrystalReports.PropertyBag>


Contents:
<customFunction name="cdPercentageDifference" version="1"><syntax>basic</syntax><returnType>number</returnType><text>Function cdPercentageDifference (baseValue As Currency, updatedValue As Currency) As Number

If baseValue &lt;&gt; 0 Then
        cdPercentageDifference = (updatedValue - baseValue) / baseValue * 100
    ElseIf updatedValue = 0 Then
        cdPercentageDifference = 0
ElseIf updatedValue &gt; 0 Then
cdPercentageDifference = 10^300 &apospositive infinity
ElseIf updatedValue &lt; 0 Then
cdPercentageDifference = -10^300 &aposnegative infinity
    End If

End Function
    </text><arguments><argument><name>baseValue</name><type>currency</type><description>base value for the difference</description><defaultValues/></argument><argument><name>updatedValue</name><type>currency</type><description>updated value for the difference</description><defaultValues/></argument></arguments><exposedInExperts>true</exposedInExperts><category>Crystal/Math</category><author>Crystal Decisions</author><synopsis>Find the percentage difference between baseValue and  updatedValue. In other words, it answers the question: by what percentage would baseValue need to be increased to get updatedValue?</synopsis><helpText>cdPercentageDifference  is a sample custom function supplied by Crystal Decisions. It can be modified to fit the needs of your organization. (We suggest that the custom function be renamed with a prefix, name and category appropriate to your organization.)

Arguments:

baseValue – a Currency value representing the base value upon which the percentage difference is calculated.

updatedValue – a Currency value representing the updated value upon which the percentage difference is calculated.


Returns: 

A Number value

Action:

A Number value which represents the percentage difference between the updated value and the base value.

Typical use:

Use this function when you want to calculate the percentage difference between two values.

Examples:

cdPercentageDifference ($200.00, $220.00) returns 10.00
</helpText><dependees/></customFunction>


# OR_OBJECTDETAILS_33

Contents:
<CrystalReports.QueryDefinition xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.QueryDefinition" version="2"><ConnectionInfo xsi:type="CrystalReports.ConnectionInfo" id="1" version="2"><UserName></UserName><Password EncrAlgo="CE8-EncryptPasswordDB"></Password><Attributes xsi:type="CrystalReports.PropertyBag" id="2" version="2"><Property><Name>Database DLL</Name><Value VariantType="String">crdb_odbc.dll</Value></Property><Property><Name>Description</Name><Value VariantType="String">Xtreme Sample Database 9</Value></Property><Property><Name>DSN</Name><Value VariantType="String">Xtreme Sample Database 9</Value></Property></Attributes><Kind>Unknown</Kind></ConnectionInfo><Tables/><TableJoins/><DataDefinition xsi:type="CrystalReports.DataDefinition" id="3" version="2"><ResultFields/><Groups/><Sorts/><FormulaFields/><ParameterFields xsi:type="CrystalReports.Fields" id="4" version="2"><Field xsi:type="CrystalReports.ParameterField" id="5" version="2"><Name>Shipped</Name><Description>Shipped?</Description><Type>xsd:boolean</Type><Length>0</Length><HeadingText></HeadingText><BrowseField/><AllowMultiValue>false</AllowMultiValue><DefaultValues xsi:type="CrystalReports.Values" id="6" version="2"><Value xsi:type="CrystalReports.ParameterFieldDiscreteValue" id="7" version="2"><Description></Description><Value VariantType="Boolean">-1</Value></Value></DefaultValues><CurrentValues/><ReportName></ReportName><ParameterType>ReportParameter</ParameterType><AllowCustomCurrentValues>true</AllowCustomCurrentValues><AllowNullValue>false</AllowNullValue><EditMask></EditMask><MinimumValue/><MaximumValue/><DefaultValueSortOrder>NoSort</DefaultValueSortOrder><DefaultValueSortMethod>BasedOnValue</DefaultValueSortMethod><ValueRangeKind>Discrete</ValueRangeKind><Usage>Unknown</Usage></Field></ParameterFields><RecordFilter/><GroupFilter/></DataDefinition><SQL>SELECT `Customer`.`Customer ID`, `Customer`.`Customer Name`, `Customer`.`City`, `Customer`.`Region`, `Customer`.`Country`, `Orders`.`Order ID`, `Orders`.`Order Amount`, `Orders`.`Order Date`, `Orders`.`Required Date`, `Orders`.`Ship Date`, `Orders`.`Shipped`
 FROM   `Customer` `Customer` INNER JOIN `Orders` `Orders` ON `Customer`.`Customer ID`=`Orders`.`Customer ID`
 WHERE  `Orders`.`Shipped`={?Shipped}</SQL><Attributes xsi:type="CrystalReports.PropertyBag" id="8" version="2"><Property><Name>Name</Name><Value VariantType="String">CustomerOrdersShipped</Value></Property></Attributes><SavedResultSet></SavedResultSet><Options/></CrystalReports.QueryDefinition>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Author</Name><Value VariantType="String">Crystal Decisions</Value></Property><Property><Name>Description</Name><Value VariantType="String">This command prompts the user for shipped or not and displays key information from the Customer and Order tables.</Value></Property><Property><Name>Locale</Name><Value VariantType="Integer">0</Value></Property></CrystalReports.PropertyBag>


Contents:
<CrystalReports.QueryDefinition xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.QueryDefinition" version="2"><ConnectionInfo xsi:type="CrystalReports.ConnectionInfo" id="1" version="2"><UserName></UserName><Password EncrAlgo="CE8-EncryptPasswordDB"></Password><Attributes xsi:type="CrystalReports.PropertyBag" id="2" version="2"><Property><Name>Database DLL</Name><Value VariantType="String">crdb_odbc.dll</Value></Property><Property><Name>Description</Name><Value VariantType="String">Xtreme Sample Database 9</Value></Property><Property><Name>DSN</Name><Value VariantType="String">Xtreme Sample Database 9</Value></Property></Attributes><Kind>Unknown</Kind></ConnectionInfo><Tables/><TableJoins/><DataDefinition xsi:type="CrystalReports.DataDefinition" id="3" version="2"><ResultFields/><Groups/><Sorts/><FormulaFields/><ParameterFields/><RecordFilter/><GroupFilter/></DataDefinition><SQL>SELECT `Employee`.`Employee ID`, `Employee`.`Last Name`, `Employee`.`First Name`, `Employee`.`Position`, `Employee`.`Reports To`, `Employee`.`Salary`, `Employee`.`Hire Date`, `Employee`.`Birth Date`, `Employee_Addresses`.`Address1`, `Employee_Addresses`.`Address2`, `Employee_Addresses`.`City`, `Employee_Addresses`.`Region`, `Employee_Addresses`.`Country`, `Employee_Addresses`.`Postal Code`, `Employee`.`Photo`, `Employee`.`Notes`
 FROM   `Employee` `Employee` INNER JOIN `Employee Addresses` `Employee_Addresses` ON `Employee`.`Employee ID`=`Employee_Addresses`.`Employee ID`</SQL><Attributes xsi:type="CrystalReports.PropertyBag" id="4" version="2"><Property><Name>Name</Name><Value VariantType="String">EmployeeInfo</Value></Property></Attributes><SavedResultSet></SavedResultSet><Options/></CrystalReports.QueryDefinition>

Attributes:
<CrystalReports.PropertyBag xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.PropertyBag" version="2"><Property><Name>Author</Name><Value VariantType="String">Crystal Decisions</Value></Property><Property><Name>Description</Name><Value VariantType="String">This command shows key information on all Employees by combining the Employee and the Employee_Address tables.</Value></Property><Property><Name>Locale</Name><Value VariantType="Integer">0</Value></Property></CrystalReports.PropertyBag>


Contents:
<CrystalReports.QueryDefinition xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.QueryDefinition" version="2"><ConnectionInfo xsi:type="CrystalReports.ConnectionInfo" id="1" version="2"><UserName></UserName><Password EncrAlgo="CE8-EncryptPasswordDB"></Password><Attributes xsi:type="CrystalReports.PropertyBag" id="2" version="2"><Property><Name>Database DLL</Name><Value VariantType="String">crdb_odbc.dll</Value></Property><Property><Name>Description</Name><Value VariantType="String">Xtreme Sample Database 9</Value></Property><Property><Name>DSN</Name><Value VariantType="String">Xtreme Sample Database 9</Value></Property></Attributes><Kind>Unknown</Kind></ConnectionInfo><Tables/><TableJoins/><DataDefinition xsi:type="CrystalReports.DataDefinition" id="3" version="2"><ResultFields/><Groups/><Sorts/><FormulaFields/><ParameterFields/><RecordFilter/><GroupFilter/></DataDefinition><SQL>SELECT `Employee`.`Employee ID`, 
`Employee`.`Last Name`, `Employee`.`First Name`, 
`Employee`.`Position`, `Employee`.`Reports To`, 
`Employee`.`Salary`, `Employee`.`Hire Date`, 
`Employee`.`Birth Date`, `Employee_Addresses`.`Address1`, 
`Employee_Addresses`.`Address2`, `Employee_Addresses`.`City`, 
`Employee_Addresses`.`Region`, `Employee_Addresses`.`Country`, 
`Employee_Addresses`.`Postal Code`, `Employee`.`Photo`, 
`Employee`.`Notes`
 FROM   `Employee` `Employee` 

INNER JOIN `Employee Addresses` `Employee_Addresses` 

ON `Employee`.`Employee ID`=`Employee_Addresses`.`Employee ID`</SQL><Attributes xsi:type="CrystalReports.PropertyBag" id="4" version="2"><Property><Name>Name</Name><Value VariantType="String">EmployeeInfo</Value></Property></Attributes><SavedResultSet></SavedResultSet><Options/></CrystalReports.QueryDefinition>


Contents:
<CrystalReports.QueryDefinition xmlns="http://www.crystaldecisions.com/report" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="CrystalReports.QueryDefinition" version="2"><ConnectionInfo xsi:type="CrystalReports.ConnectionInfo" id="1" version="2"><UserName></UserName><Password EncrAlgo="CE8-EncryptPasswordDB"></Password><Attributes xsi:type="CrystalReports.PropertyBag" id="2" version="2"><Property><Name>Database DLL</Name><Value VariantType="String">crdb_odbc.dll</Value></Property><Property><Name>Description</Name><Value VariantType="String">Xtreme Sample Database 9</Value></Property><Property><Name>DSN</Name><Value VariantType="String">Xtreme Sample Database 9</Value></Property></Attributes><Kind>Unknown</Kind></ConnectionInfo><Tables/><TableJoins/><DataDefinition xsi:type="CrystalReports.DataDefinition" id="3" version="2"><ResultFields/><Groups/><Sorts/><FormulaFields/><ParameterFields xsi:type="CrystalReports.Fields" id="4" version="2"><Field xsi:type="CrystalReports.ParameterField" id="5" version="2"><Name>Shipped</Name><Description>Shipped?</Description><Type>xsd:boolean</Type><Length>0</Length><HeadingText></HeadingText><BrowseField/><AllowMultiValue>false</AllowMultiValue><DefaultValues xsi:type="CrystalReports.Values" id="6" version="2"><Value xsi:type="CrystalReports.ParameterFieldDiscreteValue" id="7" version="2"><Description></Description><Value VariantType="Boolean">-1</Value></Value></DefaultValues><CurrentValues/><ReportName></ReportName><ParameterType>ReportParameter</ParameterType><AllowCustomCurrentValues>true</AllowCustomCurrentValues><AllowNullValue>false</AllowNullValue><EditMask></EditMask><MinimumValue/><MaximumValue/><DefaultValueSortOrder>NoSort</DefaultValueSortOrder><DefaultValueSortMethod>BasedOnValue</DefaultValueSortMethod><ValueRangeKind>Discrete</ValueRangeKind><Usage>Unknown</Usage><DefaultValueDisplayType>DescriptionAndValue</DefaultValueDisplayType></Field></ParameterFields><RecordFilter/><GroupFilter/></DataDefinition><SQL>SELECT `Customer`.`Customer ID`, `Customer`.`Customer Name`, 
`Customer`.`City`, `Customer`.`Region`, `Customer`.`Country`, 
`Orders`.`Order ID`, `Orders`.`Order Amount`, 
`Orders`.`Order Date`, `Orders`.`Required Date`, 
`Orders`.`Ship Date`, `Orders`.`Shipped`
 

FROM   `Customer` `Customer` 

INNER JOIN `Orders` `Orders` 

ON `Customer`.`Customer ID`=`Orders`.`Customer ID`
 

WHERE  `Orders`.`Shipped`={?Shipped}</SQL><Attributes xsi:type="CrystalReports.PropertyBag" id="8" version="2"><Property><Name>Name</Name><Value VariantType="String">CustomerOrdersShipped</Value></Property></Attributes><SavedResultSet></SavedResultSet><Options/></CrystalReports.QueryDefinition>


